尝试附加到SQL Server数据库文件失败

时间:2009-07-16 22:23:30

标签: sql-server vb.net deployment

我不是很擅长部署而且我遇到了问题:

首先,我正在使用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共享上。“

似乎一旦安装,应用程序就无法访问数据库。

请告诉我连接有什么问题?

非常感谢任何帮助。 提前致谢

1 个答案:

答案 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。