1

在 Visual Basic 2010 Express 中,我使用 SQL 语句来读取、写入、编辑……一个 mdb 数据库文件。但是,目前,它指向我本地目录上的一个位置。

有没有办法将文件嵌入到VB程序中并更改SQL语句以写入它?

有点像在 HTML 中,您可以移动整个网站文件夹,只要根目录包含文件夹“图像”,例如,它就会知道在那里查看......

4

3 回答 3

1

您对 MDB 文件的引用可能会作为 SQL 连接字符串包含在您的 app.config 文件中。在那里,您将找到文件本身的完整路径。如果您将其更改为相对路径(例如,只是 MDB 文件本身的名称,没有文件夹或类似的名称),那么它应该在可执行文件的目录中查找。

因此,如果您的连接字符串是:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyFolder1\mydatabase.mdb;User Id=admin;Password=;

您将其更改为:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=mydatabase.mdb;User Id=admin;Password=;
于 2013-05-11T15:02:22.263 回答
1

我不知道您当前如何为每个 sql 语句声明连接字符串,但您可以采取的一种方法是将 .mdb 文件放在应用程序的根文件夹中,然后使用通用

Application.Info.DirectoryPath

提供 mdb 文件的基本位置。然而,一个更好的主意(特别是为了避免 UAC 和权限问题,将 mdb 文件放在所有用户应用程序数据文件夹中并使用同样通用的指针

Application.CommonAppDataPath

通过一些明智的实验,您应该能够找到最符合您自己要求的解决方案。

于 2013-05-11T15:05:26.600 回答
0

不,您不能使用作为资源嵌入的 Access 数据库。

您可以像这样设置连接字符串

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\myDatabaseFile.mdb;Persist Security Info=False;

然后在您的启动代码中,您可以通过调用来设置 DataDirectory 的替换

 Dim commonAppData = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
 AppDomain.CurrentDomain.SetData("DataDirectory", commonAppData)

如果缺少此调用,那么您的 DataDirectory 预定义值将是当前应用程序启动文件夹。

关于 |DataDirectory| 的一些信息 替换字符串

于 2013-05-11T15:26:45.760 回答