我正在使用System.Data.SQLite.dll
来使用SQLite内存数据库。程序完成后,我想将内存数据库转储到.db3文件中以供下次使用。我怎样才能在C#中实现这个目标?
答案 0 :(得分:6)
据我所知,在System.Data.SQLite.dll中没有内置功能来完成此任务。但是,该功能确实存在于与SQLite核心一起维护的sqlite3.exe客户端中。
这是我用system.data.sqlite.dll执行此操作的方法:
获取SQL语句以创建新的数据库结构。
select sql from sqlite_master where name not like 'sqlite_%';
获取所有用户表的名称。
select name
from sqlite_master
where type='table' and name not like 'sqlite_%';
在一些新的SQLiteConnection中创建磁盘数据库。
执行所有以前获取的SQL语句,以在磁盘数据库中创建数据库结构。
关闭与磁盘数据库的单独连接。
将磁盘数据库附加到内存数据库。
attach 'ondisk.db3' as 'ondisk';
对于之前获得的每个用户表,将内容从内存中复制到磁盘数据库。
insert into ondisk.TableX select * from main.TableX;
insert into ondisk.TableY select * from main.TableY;