我有一个使用*.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
如何在连接字符串中输入应用程序目录(相对路径)?
答案 0 :(得分:0)
从Steve B的评论开始,后来发现这个article,我解决了我的问题,做了以下事情:
%AppData%
目录。|DataDirectory|
在调试和发布模式之间动态更改。这允许不更改连接字符串。
与此同时,我选择了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