1

可能重复:
SQL Express 连接字符串 - 相对于应用程序位置

我有一个用 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#,但我无法实现它们。提前致谢

4

1 回答 1

1

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

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

AttachDbFilename=|DataDirectory|\Food_CustomerDB.mdf那么如果您将数据库放在那里(C:\ MyReadWriteFolder),则连接字符串应该可以工作。

于 2012-06-05T07:59:39.880 回答