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