使用C#和System.Data.SQLite.dll
.NET Package 器(v1.0.117.0)。它支持SQLite 3.40.0。数据库文件通常小于50MB,我想将其加载到内存中。标准的文件支持的连接字符串可能是:
Data Source=C:\path\to\myDB.db;Version=3;
字符串
将数据库文件加载到内存中可以分几个阶段完成:
1.使用连接字符串创建空白数据库:
Data Source=:memory:;Version=3;New=True;
型
1.打开到磁盘文件的辅助连接(使用标准连接)。
1.从辅助连接读取表和表架构。
1.在内存数据库中创建所有表。
1.将数据从辅助连接复制到内存中的数据库表中。
1.关闭辅助连接。
这是可行的,但很复杂。我错过了一些简单的技巧吗?SQLite documentation on in-memory databases不清楚如何将数据库文件直接加载到内存中。有没有可能一步就把“这个数据库文件”直接加载到内存中?
1条答案
按热度按时间ergxz8rk1#
我已经想好了。
1.设置两个连接。
1.内存数据库(CONNECTION_1)的连接字符串将是
FullUri='file::memory:?cache=shared';
。1.物理磁盘数据库(CONNECTION_2)的连接字符串将是
Data Source=C:\\path\\to\\yourDB.db;Version=3;
。1.打开两个连接。
1.在CONNECTION_2上执行命令
VACUUM INTO 'file::memory:?cache=shared';
。1.关闭CONNECTION_2。
当连接关闭时,内存中的数据库将被删除,因此现在保持CONNECTION_1打开。