在 Visual Basic 2010 Express 中,我使用 SQL 语句来读取、写入、编辑……一个 mdb 数据库文件。但是,目前,它指向我本地目录上的一个位置。
有没有办法将文件嵌入到VB程序中并更改SQL语句以写入它?
有点像在 HTML 中,您可以移动整个网站文件夹,只要根目录包含文件夹“图像”,例如,它就会知道在那里查看......
您对 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=;
我不知道您当前如何为每个 sql 语句声明连接字符串,但您可以采取的一种方法是将 .mdb 文件放在应用程序的根文件夹中,然后使用通用
Application.Info.DirectoryPath
提供 mdb 文件的基本位置。然而,一个更好的主意(特别是为了避免 UAC 和权限问题,将 mdb 文件放在所有用户应用程序数据文件夹中并使用同样通用的指针
Application.CommonAppDataPath
通过一些明智的实验,您应该能够找到最符合您自己要求的解决方案。
不,您不能使用作为资源嵌入的 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 预定义值将是当前应用程序启动文件夹。