1

我的 Visual Basic 项目使用此连接字符串:

Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Admin\Desktop\IzolacCold V2\IzolacCold V2\izolac_cold_dbv2.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True

当我调试它并转到调试文件夹时,或者当我“发布”它时,就会出现问题。如果我运行 exe 文件程序正常工作,但它将数据保存在连接字符串中定义的数据库中,而不是在 DEBUG 文件夹(或 RELESE 文件夹)中创建的数据库中。

如何正确连接到我的数据库。如何建立正确的连接字符串?

4

1 回答 1

2

您应该使用DataDirectory替换字符串。

例如,您可以将连接字符串写为

Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\izolac_cold_dbv2.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True

在您的代码中,您可以在任何尝试打开连接之前控制执行此代码的 DataDirectory 的确切位置。

Dim commonDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
Dim myAppDataFolder = Path.Combine(commonDataFolder, "MyAppName")
if Not Directory.Exists(myAppDataFolder) Directory.CreateDirectory(myAppDataFolder)
AppDomain.CurrentDomain.SetData("DataDirectory", myAppDataFolder)

(此示例使用 C:\programdata\myAppName 文件夹,因为它是您的应用程序所需的读/写数据文件的最合适位置

您的部署过程应注意创建上述文件夹并将数据库文件放置在此位置。

于 2013-07-06T19:15:34.957 回答