在最终用户计算机上分发数据库

时间:2013-01-23 12:30:47

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

我有一个使用*.db3数据库的桌面应用程序。当我在除我的其他机器上运行应用程序时,无法找到数据库:使用绝对路径。

目前,在我的App.Config文件中,我有

connectionStrings>
    add name="MyProject.My.MySettings.MyProjectSQLiteConnectionString"
            connectionString="data source="N:\Long path do my DB\MyDB.db3""
            providerName="System.Data.SQLite" />
/connectionStrings>

我想用这样的东西替换数据源(遗憾的是没有工作)

data source =|DataDirectory|\MyDB.db3

如何在连接字符串中输入应用程序目录(相对路径)?

1 个答案:

答案 0 :(得分:0)

从Steve B的评论开始,后来发现这个article,我解决了我的问题,做了以下事情:

  1. 在用户计算机上,数据库将复制到%AppData%目录。
  2. |DataDirectory|在调试和发布模式之间动态更改。
  3. 这允许不更改连接字符串。

    与此同时,我选择了MS Access * .accdb数据库,但无论如何这里都是我的代码。

    Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
    #If (Not Debug) Then
    
        pathMyAppData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\MyApp"
    
        '"DataDirectory" is used in the Connection String
        AppDomain.CurrentDomain.SetData("DataDirectory", pathMyAppData)
    
    
        'The application closes if no database is found
        If Not File.Exists(pathMyAppData & "\MyDB.accdb) Then
            MsgBox("Database not found. Program closes.", MsgBoxStyle.Critical, "Error")
            Me.Close()
        End If
    
    #End If