2010-03-20 114 views
2

所以我试图连接到我的数据库在指定的位置,并建立连接,只要在数据源字段中指定相同位置的数据库,但如果我试图分发我的应用程序,文件路径会改变,并会导致我想避免的错误。这里是我的connstring:帮助连接字符串

string connstring = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\PC1\Documents\Visual Studio 2008\Projects\Test\Test\bin\Debug\MyDatabase01.accdb;Persist Security Info=true"; 

是否有反正我可以定义DataSource位置在同一个文件夹?

回答

2

如果您不能使用在连接字符串中的相对路径,你可以在运行时生成它 类似:

string connstring = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Persist Security Info=true", Path.Combine(Directory.GetCurrentDirectory(), "MyDatabase01.accdb")); 
3

有几件事情我能想到的事:

  1. 将数据库存储在应用程序旁边,然后在连接字符串中使用相对文件路径(这使用内置到ADO.Net中的替换字符串 - 有关更多信息,请参阅here):

    string connstring = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\MyDatabase01.accdb;Persist Security Info=true"; 
    
  2. 将连接字符串存储在配置文件中。这可以在您的应用程序在数据库位于不同位置的计算机上运行时进行更改。

  3. 让您的应用程序在第一次使用时提示您输入数据库的位置,然后将该位置保存为设置文件以在连接字符串中使用。

如果您正在使用应用程序分发数据库,​​则选项1是最好的。如果没有,我会去选项3.

+0

正常安装选项1)与UAC(Vista,Win7)不兼容 – 2010-03-20 20:49:00

+0

他没有说他正在写入他的数据库:) – adrianbanks 2010-03-20 22:19:16