Mik*_*ebb 26 c# sqlite connection system.data.sqlite in-memory-database
我想做的是以下几点:
using System.Data.SQLite;
using System.IO;
//My SQLite connection
SQLiteConnection myCon;
public void ReadAndOpenDB(string filename)
{
FileStream fstrm = new FileStream(filename, FileMode.Open);
byte[] buf = new byte[fstrm.Length];
fstrm.Read(buf, 0, (int)fstrm.Length);
MemoryStream mstrm = new MemoryStream(buf);
//Do some things with the memory stream
myCon = new SQLiteConnection(/*attach to my memory stream for reading*/);
myCon.Open();
//Do necessary DB operations
}
Run Code Online (Sandbox Code Playgroud)
我不打算写入内存数据库,但我需要能够在连接到程序之前在程序的内存中对文件做一些事情.
如果您不介意使用 Interop 并直接转到CreateFile()(然后将返回的 HANDLE 包装在 FileStream 中),您可以查看指定 FILE_ATTRIBUTE_TEMPORARY 创建文件,只要有缓存内存可用,当文件句柄关闭时,它将自动删除该文件。
如果有足够的高速缓存可用,指定 FILE_ATTRIBUTE_TEMPORARY 属性会导致文件系统避免将数据写回大容量存储,因为应用程序会在句柄关闭后删除临时文件。在这种情况下,系统可以完全避免写入数据。尽管它不像前面提到的标志那样直接控制数据缓存,但 FILE_ATTRIBUTE_TEMPORARY 属性确实告诉系统在系统缓存中保存尽可能多的数据而不进行写入,因此可能会引起某些应用程序的关注。
| 归档时间: |
|
| 查看次数: |
2035 次 |
| 最近记录: |