我正在遵循此处提供的指导:
Sqlite Online Backup Using System.Data.Sqlite
它按预期运行,但是我想将BackupDb.db文件传递到SaveFileDialog,以便用户可以将文件保存在应用程序文件夹之外,最好保存在外部驱动器上。我只是想不通。
这是我到目前为止所拥有的:
$PATH
我知道我错过了一步,但是我不确定要走哪一步。我将ofd1变量定义为打开SaveFileDialog,并通过of1.ShowDialog()告诉它打开。但我无法将“主要”或“目的地”传递到SaveFileDialog中,因为SQLite没有用于显示对话框的定义。
我正在尝试使用以下方法获取文件的路径:
git-frob
但是我收到一个异常消息,说明我没有对该目录的读取权限。
因此,我切换到尝试此方法,但不确定如何正确使用它。它指向基本目录,但是在bin \ debug中找不到任何内容:
git-sh-setup
这最终就是答案,我包括了btn_backup_db_Click的所有内容:
private void btn_backup_db_Click(object sender, RoutedEventArgs e)
{
var ofd1 = new Microsoft.Win32.SaveFileDialog();
using (var source = new SQLiteConnection("Data Source=database.db; Version=3;"))
using (var destination = new SQLiteConnection("Data Source=BackupDb.db; Version=3;"))
{
source.Open();
destination.Open();
source.BackupDatabase(destination, "main", "main", -1, null, 0);
//Microsoft.Win32.SaveFileDialog saveFileDialog;
ofd1.ShowDialog();
}
非常感谢大家!
答案 0 :(得分:0)
SaveFileDialog
类仅是一个实用程序,可让用户选择他要保存文件的位置(以路径形式)。
总而言之,您需要在使用sqlite进行任何操作之前显示文件对话框。找到路径后,您需要构建后连接字符串。
var ofd1 = new SaveFileDialog();
// customize file dialog properties here
if (ofd1.ShowDialog() == true)
{
var path = Path.GetFullPath(ofd1.FileName);
var destinationCnx = "Data Source=" + path + "; Version=3;"
// do sqlite stuff here
}