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

3

内存流作为数据库

我使用了这个链接上的代码,但是出现了错误信息:

System.Data.Sqlite.SqliteConnection中不存在BackupDatabase()函数

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

我想要在一个系统上导出数据库,然后在另一个安装了相同Windows应用程序的系统上导入它。我希望在按钮点击时实现这些活动。


你使用的是哪个版本的System.Data.SQLite? - undefined
版本:SQLite 3.8.11.1。我已经通过附加组件将其添加到Mozilla Firefox中。我认为它只提供以下功能:表、视图、索引和触发器。我正在考虑的工作在SQL Server中较为简单,但在SQLite数据库中却不是这样。 - undefined
3.8.11.1是SQLite库本身的版本。C# System.Data.SQLite包的版本是什么? - undefined
在学习Sqlite数据库连接时,我发现在连接字符串的'source'属性中,数据库名称的扩展名在谷歌搜索结果中的不同位置是不同的,比如'.s3db'、'.db'等。但是我准备的数据库扩展名是'.sqlite',在我的Windows窗体应用程序中正常工作。还有一件事情需要注意。 - undefined
4个回答

4

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

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

1
尝试这个。
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();
                    }

0

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


好的,我会尝试并很快回来,提前谢谢! - undefined
我将System.Data.Sqlite从1.0.74.0版本升级到了1.0.99.0版本,现在BackupDatabase()方法可以正常工作了,非常感谢。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接