我是VS 2013的新手。我使用的是visual basic。我创建了一个名为" assets"的文件夹。并将mq.mdb
放入此文件夹。然后从VS 2013的解决方案资源管理器中,右键单击mq.mdb
并选择包含在项目中。该文件也列在项目属性中。我的程序在调试和发布模式下工作,即它使用资产文件夹中的mq.mdb文件。
但是当我发布此版本然后尝试运行该应用时,它会因无效路径而抛出错误。(请查看附带的屏幕截图)
编辑2。 (忘了早些提到)我还将MDB文件的Build Action属性设置为Content和Build。 MDB文件也包含在“发布设置”中。
我甚至访问过该地点。它的路径很长,但.mdb文件也存在,但我仍然遇到错误。我被困在这里几个小时。
修改1。
(如果它有助于解决查询)我正在调用这样的MS访问数据库 -
dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
dbSource = "Data Source = " + AppDomain.CurrentDomain.BaseDirectory + "assets/mq.mdb;"
dbPassword = "Jet OLEDB:Database Password=password;"
con.ConnectionString = dbProvider & dbSource & dbPassword
con.Open()
sql = "SELECT * FROM tblTest"
da = New OleDb.OleDbDataAdapter(sql, con)
da.Fill(ds, "Test")
con.Close()
感谢。的问候,
答案 0 :(得分:1)
在解决方案资源管理器中选择MDB文件,然后将其“构建操作”属性设置为“内容和构建”。转到项目属性的“发布”页面,然后单击“应用程序文件”按钮。您应该会发现MDB文件在发布中列为“包含”。
发布此类应用时,ClickOnce会检测到MDB文件是数据文件,并将其安装在专用于数据文件的特定文件夹中。该文件夹的绝对路径不会透露给您,但您不需要它。您可以在连接字符串中使用|DataDirectory|
占位符来引用它,并在运行时解析它。您可以将代码更改为:
dbSource = "Data Source = |DataDirectory|\mq.mdb;"
实际上没有必要为连接字符串使用这三个单独的变量,因为您可以使用单个字符串文字但是,如果您确实想要单独设置每个值,我建议您使用连接字符串构建器,例如
Dim builder As New OleDbConnectionStringBuilder
builder.Provider = "Microsoft.Jet.OLEDB.4.0"
builder.DataSource = "|DataDirectory|\mq.mdb"
builder.Add("Jet OLEDB:Database Password", "password")
Dim connection As New OleDbConnection(builder.ConnectionString)