如何使用C#连接到MS Access文件(mdb)?
我试图连接到一个mdb文件,我明白,我将需要Microsoft.OLEDB.JET.4.0
数据提供程序。 不幸的是,我没有安装在(大学)机器上。 既然,他们不提供这个提供者,我相信应该有办法。
如何在没有Microsoft.OLEDB.JET.4.0
的情况下连接到文件,或者是否有其他select?
我有以下提供者:
我曾尝试使用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>