我的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文件夹)中创建的数据库中保存。
如何正确连接到我的数据库。如何构建正确的连接字符串?
答案 0 :(得分: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文件夹,因为它是应用程序所需的读/写数据文件的最合适位置
您的部署过程应注意创建上述文件夹并将数据库文件放在此位置。