2017-04-19 87 views
0

我正在开发一个使用Microsoft mdb数据库“OLEDB.12.0”存储记录的C#应用​​程序,所有工作都很好。不过,我希望能够在用户单击按钮时备份数据库。C#将应用程序mdb数据库保存为备份

目前,我正在使用以下代码,该代码在通过MS Studio 2015运行时运行,但在安装后失败。

string DBFile = "Database.mdb" as string; 

     //Set Database Filename As Today's Date For Backup And Replace Unwanted Characters 
     string ThisDate = DateTime.Now.ToString("M/d/yyyy") as string; 
     char[] separators = new char[] { ' ', '/', ',', '\r', '\t', '\n' }; 

     string[] temp = ThisDate.Split(separators, StringSplitOptions.RemoveEmptyEntries); 
     ThisDate = String.Join("_", temp); 

     //Open The Save Dialog 
     SaveFileDialog openFileDialogDB = new SaveFileDialog(); 

     openFileDialogDB.InitialDirectory = Application.ExecutablePath.ToString(); 
     openFileDialogDB.Filter = "mdb files (*.mdb)|*.mdb|All files (*.*)|*.*"; 
     openFileDialogDB.FilterIndex = 1; 
     openFileDialogDB.RestoreDirectory = true; 
     openFileDialogDB.FileName = ThisDate; 

     if (openFileDialogDB.ShowDialog() == DialogResult.OK) 
     { 
      //Save Database Backup 
      File.Copy(DBFile, openFileDialogDB.FileName, true); 
     } 

使用Install Shield安装后出现的错误是。

System.IO.FileNotFoundException:找不到文件'Database.mdb'。 文件名称:'Database.mdb'

并安装后使用一键安装我得到。

System.IO.FileNotFoundException:未能找到文件 “C:\ Users \用户名\ AppData \本地\ APPS \ 2.0 \ X27G5OGV.1A8 \ X58VR M4Y.HGD \ lght..tion_0 000000000000000_0001 .0000_f0c86b36a0494a 4c \ Database.mdb'

所以我的问题是如何在安装应用程序后对数据库进行备份。

奇怪的是,如果我将Install Shield配置为在安装完成后运行应用程序,然后执行数据库备份,它将正常工作。但是,如果我退出并重新启动应用程序,它又失败了

+0

本地数据库是MDF的权利?如果我没有弄错,mdb是mdf的数据文件。你应该复制mdf而不是mdb吗? – Krishna

+0

啊!我没有想到,会试一试。谢谢 – Malcolm

+0

在复制之前尝试分离 – Krishna

回答

0

我终于弄明白了,所以我在这里发布我的解决方案给其他可能有同样问题的人。

Solution Explorer中安装安装屏蔽的Visual Studio并将其添加到您的项目双击项目助理,然后点击应用程序快捷方式后。

其他地方点击 快捷方式并突出显示要编辑,然后在右边的 工作目录添加以下 [INSTALLDIR]莫名其妙 安装屏蔽快捷侧板

现在留下这个空白,即使点击快捷方式应用程序运行良好,但没有它,我得到了我的问题上面所述的错误。