【问题标题】:How to take Sqlite database backup using C# or Sqlite query如何使用 C# 或 Sqlite 查询进行 Sqlite 数据库备份
【发布时间】:2016-04-18 00:49:36
【问题描述】:

Memory Stream as DB

我在这个链接上使用了代码,它给了我错误信息

BackupDatabase() 不存在于 System.Data.Sqlite.SqliteConnection

是否有任何 Sqlite 查询来备份或导出 Sqlite 数据库。 然后再恢复一次

我想在一个系统上导出数据库,然后将其导入另一个系统,以便在两个系统上安装相同的 Windows 应用程序。 我想在按钮点击时实现这个活动。

【问题讨论】:

  • 您使用的是哪个版本的 System.Data.SQLite?
  • 版本:- SQLite 3.8.11.1。我已经通过插件将它添加到 mozila firefox 中。我认为它仅提供以下功能表、视图、索引和触发器。我正在考虑的工作在 SQL 服务器中更容易,但在 Sqlite 数据库中则不然。
  • 3.8.11.1 是 SQLite 库本身的版本。 C# System.Data.SQLite 包的版本是多少?
  • 在学习Sqlite数据库连接时还有一件事我发现连接字符串中'source'属性中包含的数据库名称扩展名不同,如'.s3db'、'.db'等在 Google 搜索结果中的不同位置。但是我准备的数据库有扩展名“.sqlite”,它可以与我的 Windows 窗体应用程序一起正常工作。

标签: c# winforms sqlite


【解决方案1】:

System.Data.SQLite 1.0.74.0 已经过时了。 对于备份 API 支持,至少需要 1.0.80.0 版本,但您也可以升级到当前版本。

【讨论】:

  • 好的,我去试试它很快就会回来提前谢谢!
  • 我将 System.Data.Sqlite 从版本 1.0.74.0 升级到 1.0.99.0 现在 BackupDatabase() 方法正在工作,非常感谢。
【解决方案2】:

试试这个

using (var destination = new System.Data.SQLite.SQLiteConnection(string.Format("Data Source={0}\\DriversTrucksBackup.db; Version=3;", this.txtLocation.Text)))
                    {
                        da.cn.Open();
                        destination.Open();
                        da.cn.BackupDatabase(destination, "main", "main", -1, null, 0);
                        da.cn.Close();
                    }

【讨论】:

    【解决方案3】:

    在Sqlite中备份数据库linklink试试这个功能

    public void backup(string strDestination)
    {
          using (var location = new SQLiteConnection(@"Data Source=C:\activeDb.db; Version=3;"))
          using (var destination = new SQLiteConnection(string.Format(@"Data Source={0}:\backupDb.db; Version=3;", strDestination)))
          {
              location.Open();
              destination.Open();
              location.BackupDatabase(destination, "main", "main", -1, null, 0);
          }
    }
    

    【讨论】:

      【解决方案4】:

      SQLite 版本 3.27.0 (2019-02-07) 中引入的 VACUUM INTO 命令可以作为替代。除了备份之外,它还会重建数据库文件,将其重新打包到最小的磁盘空间中。

      public void backup(string strDestination)
      {
          using (var location = new SQLiteConnection(@"Data Source=C:\activeDb.db; Version=3;"))
          {
              SQLiteCommand sqlCmd = location.CreateCommand();
              sqlCmd.CommandText = $"VACUUM INTO '{strDestination}'";
              sqlCmd.ExecuteNonQuery();
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-21
        • 2012-06-20
        • 2016-06-20
        • 1970-01-01
        • 1970-01-01
        • 2017-08-18
        • 1970-01-01
        相关资源
        最近更新 更多