Sqlite将数据库移动到C#中的内存中

时间:2019-07-07 07:29:13

标签: c# sqlite database-connection

如何将sqlite磁盘数据库移动到C#中的内存中?

我需要从磁盘打开数据库到内存数据库,以加快操作速度,完成工作后再将其保存回文件。

磁盘数据库是一个空数据库,我想将数据从List传输到内存数据库,并使用它对非常大的数据进行排序,这会杀死List.Sort函数。数据排序后,我不再需要数据库。

1 个答案:

答案 0 :(得分:1)

恐怕您不能do that。而且我不建议您为什么不增加缓存大小?

  

SQLite数据库通常存储在单个普通磁盘文件中。   但是,在某些情况下,数据库可能存储在   记忆。

     

强制SQLite数据库纯粹存在于其中的最常见方法   内存是使用特殊文件名“:memory:”打开数据库的。   换句话说,与其将真实磁盘文件的名称传递到   sqlite3_open(),sqlite3_open16()或sqlite3_open_v2()之一   函数,传入字符串“:memory:”。例如:

SQlite的每个连接都会创建一个单独的新数据库。

  

rc = sqlite3_open(“:memory:”,&db);完成后,没有磁盘文件   开了而是纯粹在内存中创建一个新数据库。的   关闭数据库连接后,数据库将不复存在。   每个:memory:数据库彼此不同。所以,打开两个   每个文件名为“:memory:”的数据库连接将创建两个   独立的内存数据库。

如果您要实现这样的事情,则没有任何官方方法可以做到!但是您可以:

  1. 打开一个新的内存数据库
  2. 将所有数据从文件db复制到内存
  3. 比较并合并从内存到磁盘的新数据/已删除/更新的数据

以下是用C语言编写的代码,作为打开SQLite文件作为in-memory的示例:

https://www.mail-archive.com/sqlite-users@mailinglists.sqlite.org/msg15929.html