c# - 如何使用 ADO.NET 将 SQLite 内存数据库转储到文件中?

标签 c# sqlite system.data.sqlite

我正在使用 System.Data.SQLite.dll 来使用 SQLite 内存数据库。程序完成后,我想将内存数据库转储到 .db3 文件中以备下次使用。如何在 C# 中实现此目的?

最佳答案

据我所知,在 System.Data.SQLite.dll 中没有内置功能可以完成此操作。然而,该功能确实存在于与 SQLite 核心一起维护的 sqlite3.exe 客户端中。

这就是我使用 system.data.sqlite.dll 的方式:

  1. 获取 SQL 语句以创建新的数据库结构。

    select sql from sqlite_master where name not like 'sqlite_%';
    
  2. 获取所有用户表的名称。

    select name 
    from sqlite_master 
    where type='table' and name not like 'sqlite_%';
    
  3. 在一些新的 SQLiteConnection 中创建磁盘上的数据库。

  4. 执行之前获取的所有SQL语句,在磁盘数据库中创建数据库结构。

  5. 关闭与磁盘上数据库的单独连接。

  6. 将磁盘上的数据库附加到内存中的数据库。

    attach 'ondisk.db3' as 'ondisk';
    
  7. 对于之前获取的每一个用户表,将内存中的内容复制到磁盘数据库中。

    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/

相关文章:

c# - 如何在AspNet Core gRPC Service中导入protobuf知名类型

c# - System.Web.Security.AntiXss.AntiXssEncoder.MarkAsSafe 和 LowerCodeCharts.None 中的错误?

c# - 在 SQLite 中使用 SELECT 命令列出附加数据库

c# - 难以在 C# 中的 SQLite 数据库上运行并发 INSERTS

visual-studio - 为什么服务器资源管理器添加连接对话框中缺少 SQLite 提供程序?

c# - ASP.NET - 动态控制值和回传

c# - .Net WebRequest 超时与 TCP 超时

sqlite 到 coredata

sql - 如何在SQl中选择单个表中的所有重复记录

android - 如何在 Android 数据库表中找到数据库长度?