C# 使用FileDialog拣选路径,实现数据库的备份与还原
C# 使用FileDialog选取路径,实现数据库的备份与还原
如题,之前使用openFileDialog和saveFileDialog选取路径作为数据库的备份或还原路径 ,并实现了数据库的还原备份功能。
现在遇到了问题:我把程序布设到别的电脑上,使用该备份还原功能时,使用FileDialog打开的对话框还是当前电脑的本地路径,这时候备份还原功能就会出现问题,如出现异常:“+ 已引发:“无法打开备份设备 'C:\Users\Administrator\Desktop\2111.bak'。出现操作系统错误 5(拒绝访问。)。
BACKUP DATABASE 正在异常终止。”(System.Data.SqlClient.SqlException) 异常消息 = "无法打开备份设备 'C:\\Users\\Administrator\\Desktop\\2111.bak'。出现操作系统错误 5(拒绝访问。)。\r\nBACKUP DATABASE 正在异常终止。", 异常类型 = "System.Data.SqlClient.SqlException"
”
我能不能用FileDialog实现类似于SQL数据库的备份还原功能那样的,打开服务器所在电脑的路径,而不是程序本身电脑的本地路径呢?
目前代码如下:
是不是应该该saveFileDialog1.InitialDirectory = ? 该怎么改呢
------解决思路----------------------
有能备份到当前运行的电脑上的写法么?
------解决思路----------------------
saveFileDialog只能帮你确定文件路径,你获得路径后,需要通过stream保存到这儿路径
------解决思路----------------------
可以,左边栏应该有预设的保存位置吧,比如“我的文档”、本地机器、网络路径...
其实你要的只是一个UNC路径,类似\\192.168.1.123\abc之类的
只要有权限写入就行
------解决思路----------------------
https://msdn.microsoft.com/zh-cn/library/system.windows.forms.filedialog.customplaces.aspx
或者你自己枚举服务器预设的目录结构,绑定到树上面
------解决思路----------------------
txtpath文本框用于输入备份的数据库文件路径,通过指定文件路径,然后执行BACKUP 语句,应该是自动备份到数据库所在机器的磁盘吧。
传送门
如题,之前使用openFileDialog和saveFileDialog选取路径作为数据库的备份或还原路径 ,并实现了数据库的还原备份功能。
现在遇到了问题:我把程序布设到别的电脑上,使用该备份还原功能时,使用FileDialog打开的对话框还是当前电脑的本地路径,这时候备份还原功能就会出现问题,如出现异常:“+ 已引发:“无法打开备份设备 'C:\Users\Administrator\Desktop\2111.bak'。出现操作系统错误 5(拒绝访问。)。
BACKUP DATABASE 正在异常终止。”(System.Data.SqlClient.SqlException) 异常消息 = "无法打开备份设备 'C:\\Users\\Administrator\\Desktop\\2111.bak'。出现操作系统错误 5(拒绝访问。)。\r\nBACKUP DATABASE 正在异常终止。", 异常类型 = "System.Data.SqlClient.SqlException"
”
我能不能用FileDialog实现类似于SQL数据库的备份还原功能那样的,打开服务器所在电脑的路径,而不是程序本身电脑的本地路径呢?
目前代码如下:
saveFileDialog1.InitialDirectory = Application.StartupPath + "\\";//默认路径为D://
saveFileDialog1.FilterIndex = 1; //默认值为第一个
saveFileDialog1.RestoreDirectory = true; //重新定位保存路径
saveFileDialog1.Filter = "备份文件 (*.bak)|*.bak|所有文件 (*.*)|*.*";//筛选器,定义文件类型
是不是应该该saveFileDialog1.InitialDirectory = ? 该怎么改呢
------解决思路----------------------
有能备份到当前运行的电脑上的写法么?
------解决思路----------------------
saveFileDialog只能帮你确定文件路径,你获得路径后,需要通过stream保存到这儿路径
------解决思路----------------------
可以,左边栏应该有预设的保存位置吧,比如“我的文档”、本地机器、网络路径...
其实你要的只是一个UNC路径,类似\\192.168.1.123\abc之类的
只要有权限写入就行
------解决思路----------------------
https://msdn.microsoft.com/zh-cn/library/system.windows.forms.filedialog.customplaces.aspx
或者你自己枚举服务器预设的目录结构,绑定到树上面
------解决思路----------------------
txtpath文本框用于输入备份的数据库文件路径,通过指定文件路径,然后执行BACKUP 语句,应该是自动备份到数据库所在机器的磁盘吧。
传送门
private void button2_Click(object sender, EventArgs e)
{
try
{
string strg = Application.StartupPath.ToString();
strg = strg.Substring(0, strg.LastIndexOf("\\"));
strg = strg.Substring(0, strg.LastIndexOf("\\"));
strg += @"\Data";
string sqltxt = @"BACKUP DATABASE db_MrCy TO Disk='" + strg + "\\" + txtpath.Text +".bak"+ "'";
SqlConnection conn = BaseClass.DBConn.CyCon();
conn.Open();
SqlCommand cmd = new SqlCommand(sqltxt, conn);
cmd.ExecuteNonQuery();
conn.Close();
if (MessageBox.Show("备份成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) == DialogResult.OK)
{
this.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}