相对路径连接字符串vb.net

时间:2012-06-05 06:21:59

标签: sql vb.net visual-studio-2010 sql-server-2008-express

  

可能重复:
  SQL Express Connection string - Relative to application location

我有一个用vb.net编写的桌面应用程序。该应用程序使用SQL Server Express 2008数据库(.mdf文件)。 目前我将连接字符串作为绝对路径,如下所示:

Dim ObjConnection As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Pantheo\Documents\Visual Studio 2010\Projects\Food Manager 2012(new)\Food Manager 2012\Food_CustomerDB.mdf;Integrated Security=True;User Instance=True")

在我的电脑上运行得非常好。如果我构建它并让.exe运行到不同的PC它崩溃,因为它无法附加数据库。

我尝试使用此连接字符串使其相对:

 Dim ObjConnection As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Food_CustomerDB.mdf;Initial Catalog=Food_CustomerDB;Integrated Security=True;User Instance=True")

没有成功。有人能帮我吗?我知道有很多其他答案,基本上是关于C#,但我无法实现它们。提前致谢

1 个答案:

答案 0 :(得分:1)

DataDirectory值只是从AppDomain.CurrentDomain属性列表中提取的字符串。在WinForm应用程序中没有预先定义,但您可以在打开数据库之前设置它。

AppDomain.CurrentDomain.SetData("DataDirectory", @"C:\MyReadWriteFolder")

然后,如果您将数据库放在那里(C:\ MyReadWriteFolder),则AttachDbFilename=|DataDirectory|\Food_CustomerDB.mdf的连接字符串应该有效。