将我的访问数据库放在计算机中的位置

时间:2016-01-15 07:49:40

标签: vb.net visual-studio-2010 ms-access

我刚刚在Visual Basic 2010中完成了我的项目。我正在使用MS Access作为我的数据库。

我已将其保存在我的文档中并与我的项目相关联。我没有把它复制到调试。

现在,当我创建安装程序并将其安装到另一台计算机时,由于无法找到我的数据库而发生错误。手动将我的数据库复制到另一台计算机可以解决问题。

c:\users\users\documents\database.accdb

问题我如何创建包含我的数据库的安装程序?我应该把我的数据库放在哪里?将我的数据库放在用户文件夹中使其成为只读。

我使用Visual Studio安装程序,安装项目。谢谢你的帮助

3 个答案:

答案 0 :(得分:2)

我个人的理念是安装程序不应创建每用户数据或对象。您的应用程序的可执行文件,而不是安装程序,应该是创建.accdb文件的文件(或者从只读%programfiles%的只读模板文件中复制文件。

如果数据库是按用户进行的,不应该被用户直接操作,那么它应该在%appdata%\YourCompany\YourProduct\或(%localappdata%下,如果它不应该漫游)而不是{{1} }。

如果数据库由多个用户共享,则它应位于My Documents(又名%programdata%)下。

所以做这样的事情:

  1. 不要"安装"安装期间%allusersprofile%文件。
  2. 相反,要么:
    1. 在您的软件代码中使用ADO .accdb
    2. 或者在Program的安装目录(CreateDatabase下)中有一个只读模板/原型数据库
      1. 在应用程序启动时,检查%programfiles%\You文件是否存在
      2. 如果没有,请使用%appdata%\You\Foo.accdb将文件从File.Copy复制到%programfiles%\You
      3. 清除只读标志

答案 1 :(得分:1)

数据库的正确位置是COMMONAPPLICATIONDATA文件夹的子文件夹(或者如果单个用户参与访问db APPLICATIONDATA)。
这是一个应用程序的所有数据都应该驻留的地方。可以使用Environment.SpecialFolder枚举

检索路径
Dim commonPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
Dim myAppDataPath = Path.Combine(commonPath, "MyAppDataPath")
if Not Directory.Exists(myAppDataPath) Then
     Directory.CreateDirectory(myAppDataPath)
End If
Dim myDbPath = Path.Combine(myAppDataPath, "MyDatabaseName.accdb")

这是一个简单的脚本,显示如何从代码中检索此路径(当然,您可以在App.Config文件中使用简单的行作为连接字符串)

上面的代码应该已经由您的安装程序实现,您可以通过一些预定义的宏来实现。这取决于您的安装程序 例如,this question/answer详细说明了如何通过 Visual Studio 2010安装项目来访问它。

答案 2 :(得分:0)

在发布(编译)期间,编译器会询问您是否应将数据库纳入项目。如果您回答是,则程序将在 C驱动器,我不担心路径。但是,用户将无法操作数据库。