访问数据库和c#之间的连接

时间:2012-11-16 05:33:47

标签: c# ms-access ado.net oledb

我正在检查MSDN社交中c#的访问数据库连接,我发现样本连接字符串如下

string ConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\abc.mdb;Jet OLEDB:Database Password=password";

现在我的问题是假设我创建了一个表单应用程序,并将数据库文件abc.mdb放在.exe文件所在的同一位置。在这种情况下,我可以写如下连接字符串吗?

string ConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=abc.mdb;Jet OLEDB:Database Password=password";

我正在尝试使用SQL数据库文件,但它没有运行可能是完整路径对于这种情况是强制性的。我是对的?

5 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

尝试,(虽然未经过测试

string dbpath = AppDomain.CurrentDomain.BaseDirectory + "abc.mdb";
string ConnStr = String.Format(Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Jet OLEDB:Database Password=password;", dbpath)

答案 2 :(得分:0)

要回答您的第一个问题,是的,将.mdb文件放在同一目录中将与第二个连接字符串一起使用。

假设您在第二个“问题”中表示MSSQL或MSSQL Express,则需要将SQL Server实例指定为连接字符串的一部分。

答案 3 :(得分:0)

对于ASP.NET 2.0或更高版本,数据库文件(.mdb或.accdb)应始终进入App_Data文件夹。这有两个原因:首先,App_Data配置为阻止用户浏览到该文件夹​​并下载数据库副本。其次,您可以利用特殊的DataDirectory标记(或替换字符串)来引用连接字符串中的文件。 DataDirectory默认为App_Data目录。

所以你的Access数据源是这样的。

<asp:AccessDataSource 
    ID="AccessDataSource1" 
    runat="server" 
    DataFile="~/App_Data/MyDb.mdb" 
    SelectCommand="Select * From MyTable">
</asp:AccessDataSource>

答案 4 :(得分:0)

我没有对此进行测试,但可以使用DataDirectory替换字符串。

string ConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\abc.mdb;Jet OLEDB:Database Password=password";

然后你可以做

AppDomain.CurrentDomain.SetData("DataDirectory", @"D:\MyApp");

如以下KB article中所述:

  

<强> | DataDirectory目录|替换字符串支持

     

| DataDirectory | (用管道符号括起来)是替换字符串   表示数据库路径。因此,你没有必要   包括代码中的完整路径。当您包含完整路径时   代码,您可能会遇到问题,因为完整的数据库路径   可以在不同的位置序列化。 | DataDirectory |   替换字符串也可以轻松共享项目和   部署应用程序。

     

例如,如果在代码中包含完整路径,则应用程序   可以有以下连接字符串。

     

数据源= c:\ program files \ MyApp \ Mydb.sdf

     

如果您使用| DataDirectory |代换   字符串,应用程序可以具有以下连接字符串。

     

数据   Source = | DataDirectory | \ Mydb.sdf

     

要设置DataDirectory属性,请调用AppDomain.SetData方法。如果您未设置DataDirectory   属性,应用以下默认规则来访问   数据库文件夹:

     
      
  • 对于放在文件夹中的应用程序   用户的计算机,数据库文件夹使用应用程序文件夹。
  •   
  • 对于   在ClickOnce下运行的应用程序,即数据库文件夹   使用创建的特定数据文件夹。
  •