我目前正在考虑SQLite
为我的 C# 项目使用数据库引擎,但我遇到了以下问题:我找不到任何用于内存存储的 API。我想要实现的是:
程序启动后,我想将 db 文件(从 HDD)加载到内存中。在程序执行期间,我想将此内存流用作真正的数据库(读取、写入、插入、选择等)。关闭后将流保存到文件中。
谁能以正确的方式指出我或建议另一个更适合此目的的数据库引擎。
您可以使用能够将 db 文件复制到内存、内存到文件的SQLite Online Backup API 。从版本 1.0.80.0(带有 SQLite 3.7.11)开始,System.Data.SQLite提供了对SQLite 在线备份 API的本机支持。
这是如何在 C# 中使用 API 的简单示例:
SQLiteConnection source = new SQLiteConnection("Data Source=c:\\test.db");
source.Open();
using (SQLiteConnection destination = new SQLiteConnection(
"Data Source=:memory:"))
{
destination.Open();
// copy db file to memory
source.BackupDatabase(destination, "main", "main",-1, null, 0);
source.Close();
// insert, select ,...
using (SQLiteCommand command = new SQLiteCommand())
{
command.CommandText =
"INSERT INTO t1 (x) VALUES('some new value');";
command.Connection = destination;
command.ExecuteNonQuery();
}
source = new SQLiteConnection("Data Source=c:\\test.db");
source.Open();
// save memory db to file
destination.BackupDatabase(source, "main", "main",-1, null, 0);
source.Close();
}