如何使用 C# 或 Sqlite 查询进行 Sqlite 数据库备份
本文关键字:Sqlite 数据库 备份 查询 何使用 | 更新日期: 2023-09-27 18:30:15
内存流作为数据库
我在此链接上使用了代码,这给了我错误消息
BackupDatabase() 不存在于 System.Data.Sqlite.SqliteConnection
是否有任何 Sqlite 查询来备份或导出 Sqlite 数据库。然后再次恢复
我想在一个系统上导出数据库,然后将其导入另一个系统,用于两个系统上安装的相同Windows应用程序。我想在单击按钮时实现此活动。
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();
}
}