如何使用C#连接到MS Access文件(mdb)?

我试图连接到一个mdb文件,我明白,我将需要Microsoft.OLEDB.JET.4.0数据提供程序。 不幸的是,我没有安装在(大学)机器上。 既然,他们不提供这个提供者,我相信应该有办法。

如何在没有Microsoft.OLEDB.JET.4.0的情况下连接到文件,或者是否有其他select?

我有以下提供者:

可用的Ole DB提供程序

我曾尝试使用OLE DB Provider for Microsoft Directory Services ,在testing连接时,我得到'testing成功,但某些设置不被提供程序接受'。 我拿了这个string,并用它,我得到ADsDSOObject' failed with no error message available, result code: DB_E_ERRORSINCOMMAND(0x80040E14)

最简单的连接方式是使用这样的代码通过OdbcConnection

 using System.Data.Odbc; using(OdbcConnection myConnection = new OdbcConnection()) { myConnection.ConnectionString = myConnectionString; myConnection.Open(); //execute queries, etc } 

其中myConnectionString是这样的

 myConnectionString = @"Driver={Microsoft Access Driver (*.mdb)};" + "Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=; 

请参阅ConnectionStrings

或者,您可以创build一个DSN,然后在连接string中使用该DSN

  • 打开控制面板 – pipe理工具 – ODBC数据源pipe理器
  • 转到系统DSN页面并添加一个新的DSN
  • selectMicrosoft Access驱动程序(* .mdb),然后按END
  • 设置DSN的名称(在本例中selectMyDSN)
  • select要使用的数据库
  • 尝试压缩或恢复命令,看看连接是否工作

现在你的connectionString可以这样写

 myConnectionString = "DSN=myDSN;" 

您应该使用“Microsoft OLE DB提供程序的ODBC驱动程序”来访问到Microsoft Access。 这里是使用它的示例教程

http://msdn.microsoft.com/en-us/library/aa288452(v=vs.71).aspx

什么访问文件扩展名或您使用? Jet OLEDB或Ace OLEDB。 如果您的Access数据库是.mdb(又名Jet Oledb)

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Oledb namespace MembershipInformationSystem.Helpers { public class dbs { private String connectionString; private String OleDBProvider = "Microsoft.JET.OLEDB.4.0"; \\if ACE Microsoft.ACE.OLEDB.12.0 private String OleDBDataSource = "C:\\yourdb.mdb"; private String OleDBPassword = "infosys"; private String PersistSecurityInfo = "False"; public dbs() { } public dbs(String connectionString) { this.connectionString = connectionString; } public String konek() { connectionString = "Provider=" + OleDBProvider + ";Data Source=" + OleDBDataSource + ";JET OLEDB:Database Password=" + OleDBPassword + ";Persist Security Info=" + PersistSecurityInfo + ""; return connectionString; } } } 

以下是如何使用Jet OLEDB或Ace OLEDB Access DB:

 using System.Data; using System.Data.OleDb; string myConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=C:\myPath\myFile.mdb;" + "Persist Security Info=True;" + "Jet OLEDB:Database Password=myPassword;"; try { // Open OleDb Connection OleDbConnection myConnection = new OleDbConnection(); myConnection.ConnectionString = myConnectionString; myConnection.Open(); // Execute Queries OleDbCommand cmd = myConnection.CreateCommand(); cmd.CommandText = "SELECT * FROM `myTable`"; OleDbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); // close conn after complete // Load the result into a DataTable DataTable myDataTable = new DataTable(); myDataTable.Load(reader); } catch (Exception ex) { Console.WriteLine("OLEDB Connection FAILED: " + ex.Message); } 

尝试这个..

 using System.Data.OleDb; OleDbConnection dbConn; dConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Registration.accdb;"); 

另一个最简单的连接方式是通过一个使用App.config文件的OdbcConnection

  <appSettings> <add key="Conn" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|MyDB.mdb;Persist Security Info=True"/> </appSettings> 

MyDB.mdb是我的数据库文件,它在主exe文件中出现在当前的主应用程序文件夹中。

如果你的mdf文件有密码,就这样使用

  <appSettings> <add key="Conn" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|MyDB.mdb;Persist Security Info=True;Jet OLEDB:Database Password=Admin$@123"/> </appSettings>