2009-09-17 142 views
20

我通过C++中的sqlite制作了一个数据库。将内存数据库保存到磁盘

db已经在内存中创建(使用ins:文件名中的“:memory:”参数),以便有一个非常快速的行为。

sqlite3* mem_database; 
if((SQLITE_OK == sqlite3_open(":memory:", &mem_database)){ 
    // The db has been correctly created and 
    // I can do some stuff with it. 
} 
sqlite3_close(mem_database); 

我的问题是:我怎么能写的内存数据库到磁盘

该数据库由以下各行产生的? (当然是通过c/C++)。

我读了一些关于ATTACH和DETACH的sqlite命令,但我可以让他们只使用sqlite交互式shell(而不是来自c/C++代码)。

迎接。

回答

19

看看这个例子:Loading and Saving In-Memory Databases做任何表之前

+0

太棒了!这工作完美:D – Giancarlo 2009-09-17 09:07:52

+0

我正在寻找C#文档为相同的目的。请分享,如果你知道。 – 2011-01-18 05:45:00

+0

@Mubashar:我不熟悉C#。我相信在C#中转换示例很容易。 'sqlite3_backup_X'函数完成这项工作。 – 2011-01-18 17:37:50

2

使用事务声明。这确保了快速处理和回滚。这样,您不需要直接在内存中实现数据库。