首页 > 解决方案 > 发布项目,包括数据库,其中每次在 Visual Basic 中打开项目时都会更新数据库

问题描述

我正在开发一个包含数据库的 Visual Basic 项目。当我发布项目时,我收到一条错误消息,它基本上告诉我无法访问我的数据库,因为在我发布应用程序之前它最初位于 Debug 文件夹中。

我确实为我的问题找到了多种解决方案,但是由于不同的原因,它们都没有起作用。

1)我试图将我的数据库添加到我的资源中,然后在我的代码中将其用作 My.Resources.dbName 这里的问题是,当我必须在连接字符串中指定我的数据源时,我无法使用 My.Resources.dbName

在这种情况下,我需要一个替代解决方案来代替我可以使用的连接字符串?

当前连接字符串:“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=db.accdb;Persist Security Info=True”

2)我在安装我的应用程序的 .exe 版本后尝试将数据库放在安装文件夹中,但仍然无法正常工作

3) 我尝试将其添加为数据库源,但没有找到将其链接到我的项目的方法

如果你打算用这种方式给我一个解决方案,请分很多步骤做,并解释清楚

我阅读的大多数解决方案都与上述解决方案类似,因此我无需提及它们。

另外,我需要数据库来保存其记录,因为在第一个解决方案中,每次打开 .exe 文件时数据库都是空的。

数据库:Microsoft Access VB:Visual Basic 2017/2015

感谢您花时间和精力帮助我!

标签: databasevb.netpublish

解决方案


使用本地数据库非常容易。

第一步是将其添加到解决方案资源管理器中的项目中。对于 Access 数据库,通常需要在 Access 中创建它并将其保存到 Documents 文件夹等,然后右键单击您的项目或使用项目菜单并将其作为现有项目添加到项目中。当系统提示您将文件复制到您的项目文件夹时,请执行此操作。您的干净数据库现在位于您的项目文件夹中,其余的源文件。每当您想对架构或默认数据进行任何更改时,您都可以对那个源文件进行更改。

然后,您通常应该Copy to Output Diorectory将该文件的属性从更改Copy AlwaysCopy if Newer。发生的情况是,该源文件在您构建时与您的 EXE 一起复制到您的输出文件夹中,并且它是您的应用程序在运行时连接到的那个副本。默认情况下,每次构建时都会生成一个副本,这意味着无论何时更改代码并在调试器中运行项目,您在之前的调试运行中对数据所做的任何更改都将丢失。通过设置Copy if Newer,仅当您对源数据文件本身进行更改时,调试输出文件夹中的副本才会被覆盖。

当您发布项目时,会创建一个发布版本。干净的源数据文件的副本在 Release 输出文件夹中制作,这就是您与 Release EXE 一起部署的内容。Debug 数据库是完全不相关的。因为 Release 输出是从源文件创建的,所以它不受您在测试时在 Debug 副本中造成的任何混乱的影响。只需将数据库正确添加到您的项目中,就没有问题需要解决。


推荐阅读