0

我有一个使用*.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

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

4

1 回答 1

0

从史蒂夫 B 的评论开始,后来找到这篇文章,我通过以下方式解决了我的问题:

  1. 在用户机器上,数据库被复制到%AppData%目录中。
  2. |DataDirectory|Debug 和 Release 模式之间动态改变。

这允许不更改连接字符串。

同时,我选择了 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
于 2013-02-01T10:43:21.713 回答