我正在使用 System.Data.SQLite.dll
来使用 SQLite 内存数据库。程序完成后,我想将内存数据库转储到 .db3 文件中以备下次使用。如何在 C# 中实现此目的?
最佳答案
据我所知,在 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;
关于c# - 如何使用 ADO.NET 将 SQLite 内存数据库转储到文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12211717/