如何使用 C# 或 Sqlite 查询进行 Sqlite 数据库备份

本文关键字:Sqlite 数据库 备份 查询 何使用 | 更新日期: 2023-09-27 18:30:15

内存流作为数据库

在此链接上使用了代码,这给了我错误消息

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

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

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

如何使用 C# 或 Sqlite 查询进行 Sqlite 数据库备份

Sqlite 链接中的备份数据库链接尝试此函数

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);
      }
}

试试这个

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();
                    }

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

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();
    }
}