我不是很擅长部署而且我遇到了问题:
首先,我正在使用Vista。
我在vb.net中创建了一个Windows应用程序,其中包含一个名为Customerdb.mdf
的数据库文件。
我选择了数据库,在属性中,我选择了Embedded Resource
选项。
我使用了以下连接:
Dim constring As String
constring = Application.StartupPath.ToString() + "\Customerdb.mdf"
Dim con = New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=" + constring + ";Integrated Security=True;User Instance=True")
我的问题是我在安装设置后无法访问数据库。每次我尝试访问数据库时都会抛出以下错误:
“尝试为文件C:\ Program File \ App \ Customerdb.mdf附加自动命名的数据库失败。具有相同名称的数据库退出,或指定的文件无法打开,或者它位于UNC共享上。“
似乎一旦安装,应用程序就无法访问数据库。
请告诉我连接有什么问题?
非常感谢任何帮助。 提前致谢
答案 0 :(得分:1)
我选择了嵌入式资源选项。
这意味着数据库文件作为资源嵌入在创建的* .exe文件中。它不是文件系统上的单独文件。您尝试使用此代码创建的文件名:Application.StartupPath.ToString() + "\Customerdb.mdf"
不存在。
要解决此问题,您可以选择以下几种方法:
Embedded Resource
更改为Content
并将其告知“始终复制”Embedded Resource
更改为Content
并设置部署项目以将其放入Application Data文件夹。其中,你真的应该做最后一个,不要忘记在你的应用程序中部署sql server express。
最后,Sql Server Express是一个非常糟糕的选择,可用作单用户桌面数据库。你真的应该选择桌面(或“进程内”)引擎,如SQL Server Compact Edition,sqlite,甚至是Access。