SQL数据库位置

时间:2013-05-11 13:52:31

标签: sql vb.net local

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

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

有点像HTML中的方式,你可以移动整个网站文件夹这么久,因为根包含文件夹“images”,然后它知道在那里看...

3 个答案:

答案 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预定义值将是当前的应用程序启动文件夹。

Some info on |DataDirectory| sustitution string