Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何构建vb.net应用程序,以便在发布时轻松连接数据库?_Vb.net_Visual Studio 2010_Ms Access 2007_Connection String_Publish - Fatal编程技术网

如何构建vb.net应用程序,以便在发布时轻松连接数据库?

如何构建vb.net应用程序,以便在发布时轻松连接数据库?,vb.net,visual-studio-2010,ms-access-2007,connection-string,publish,Vb.net,Visual Studio 2010,Ms Access 2007,Connection String,Publish,我在VS2010中创建了VB.NET应用程序,它使用一个名为MenuDB.mdb的2007 Access数据库。在开发过程中,一切都很好 现在我发布了它,我得到了奇怪的错误,因为出于某种原因,应用程序没有连接到数据库 我安装并运行了应用程序,但一旦打开,就会出现以下错误: System.Data.OleDb.OleDbException (0x80004005): Could not find file 'C:\Users\Administrator\AppData\Local\Apps\2.

我在VS2010中创建了VB.NET应用程序,它使用一个名为MenuDB.mdb的2007 Access数据库。在开发过程中,一切都很好

现在我发布了它,我得到了奇怪的错误,因为出于某种原因,应用程序没有连接到数据库

我安装并运行了应用程序,但一旦打开,就会出现以下错误:

System.Data.OleDb.OleDbException (0x80004005): Could not find file 
'C:\Users\Administrator\AppData\Local\Apps\2.0\Data\OV86PXJA.K3R\8575R5AY.95Z\menu..tion_0d4fa454d69e8e6b_0001.0000_8340d263807cbb71\Data\MenuDB.accdb'.
我知道问题与我将应用程序与数据库关联的方式有关,但我不知道哪种方式是正确的。在解决方案资源管理器中,我将MenuDB.accdb的构建类型更改为内容,因为它是嵌入的资源。但这两种方式都不起作用。在我的App.config中,我有以下连接字符串:

connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\MenuDB.accdb"
我希望在部署应用程序时,数据库应该位于应用程序文件夹中,无论安装在哪里。我该怎么做

编辑
我不介意以这样的方式部署它,即我需要自己将数据库粘贴到目标机器上的某个位置—只要它工作。

如果您有多个用户使用相同或类似的数据库,并且没有访问SQL server MySQL、MSSQL或其他数据库的权限,然后将数据库共同定位在中心位置,最好是所有用户都将有权访问的网络位置,并更改连接字符串以容纳网络上的数据库位置


请注意,在执行简单的数据检索/提交时,Access最多可以处理10个用户,但如果您在其他人通过数据对象进行访问时打开了Access,则您可以将其锁定。

您是否验证了数据库是随应用程序复制的,而不是被排除?我很少使用App_Data文件夹中的数据库进行开发,所以很多时候我会从发布/单击一次解决方案中排除目录中的任何内容。另外,这里有一个MSDN问题。。。。我正在检查那条线。顺便说一句,这是我的第一个VB.NET项目-我如何验证它是否被复制和排除?您是指在解决方案资源管理器中单击.accdb文件时产生的属性吗?在我的例子中,Copy to Output Directory设置为Copy if Newer。我不介意以这样的方式部署它,即我需要将数据库粘贴到目标机器上的某个位置,只要它能工作!这是一个小的单用户桌面应用程序。在发布设置中,我尝试了应用程序文件>包含。但我还是犯了那个错误。我们如何修复它?我不需要DSN。您使用什么方法打包应用程序以进行安装?@user961627一些单击一次的说明。我从菜单中得到了这些说明。项目>发布。然后我选择离线,比如CD等。就是这样。有些程序包含数据库的显式代码,有些是固有的。无论我在哪里使用自己的连接字符串显式建立连接,我都可以添加:Application.StartupPath,然后将数据库粘贴到应用程序文件夹中。但是如何将其添加到App.config文件中,而Application.StartupPath无法识别?