Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 内存流作为数据库_C#_Sqlite_Memory - Fatal编程技术网

C# 内存流作为数据库

C# 内存流作为数据库,c#,sqlite,memory,C#,Sqlite,Memory,我目前正在考虑使用SQLite作为我的C项目的db引擎,但我遇到了以下问题:我找不到任何用于内存存储的API。我希望实现以下目标: 在程序启动时,我想将数据库文件从硬盘加载到内存中。 在程序执行过程中,我想使用这个内存流作为一个真正的db读、写、插入、选择等。 关闭后,将流保存到文件中 有谁能给我指出正确的方法,或者推荐另一个更适合此目的的db引擎。您可以使用它将db文件复制到内存,将内存复制到文件。 对的本机支持存在于版本1.0.80.0和SQLite 3.7.11的System.Data.S

我目前正在考虑使用SQLite作为我的C项目的db引擎,但我遇到了以下问题:我找不到任何用于内存存储的API。我希望实现以下目标:

在程序启动时,我想将数据库文件从硬盘加载到内存中。 在程序执行过程中,我想使用这个内存流作为一个真正的db读、写、插入、选择等。 关闭后,将流保存到文件中

有谁能给我指出正确的方法,或者推荐另一个更适合此目的的db引擎。

您可以使用它将db文件复制到内存,将内存复制到文件。 对的本机支持存在于版本1.0.80.0和SQLite 3.7.11的System.Data.SQLite中

这是如何在C中使用API的简单示例:

SQLiteConnection source=new SQLiteConnectionData source=c:\\test.db; 资料来源:开放; 使用SQLiteConnection destination=新建SQLiteConnection 数据源=:内存: { 目的地:开放; //将数据库文件复制到内存 source.backUpdateBaseDestination,main,main,-1,null,0; 来源:关闭; //插入,选择,。。。 使用SQLiteCommand=newSQLITECommand { command.CommandText= 在t1 x值中插入“一些新值”;; command.Connection=目的地; command.ExecuteNonQuery; } source=new-SQLiteConnectionData-source=c:\\test.db; 资料来源:开放; //将内存数据库保存到文件 destination.backUpdateBaseSource,main,main,-1,null,0; 来源:关闭; }
谢谢你,这是一个很好的、干净的解决方案。有没有办法在不接触磁盘的情况下获取字节[]呢?警告:对内存中的数据库使用备份API会删除保证。@Gleno:将字节[]保存到临时文件temp.db中,然后使用备份API将其复制到内存数据库中。然后做出改变。然后使用备份api再次存储到temp.db。然后将temp.db读回字节[]。此API是用C编写的。如何将此API与mono一起使用?请建议