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

Sus*_*ire 14 c# oledb ms-access

我正在尝试连接到mdb文件,我知道我需要Microsoft.OLEDB.JET.4.0数据提供程序.不幸的是,我没有在(大学)机器上安装它.既然,他们没有提供那个提供者,我相信应该有办法解决.

如何在没有Microsoft.OLEDB.JET.4.0或没有替代方案的情况下连接到文件?

我有以下提供者:

可用的Ole DB提供商

我尝试过使用OLE DB Provider for Microsoft Directory Services,在测试连接的同时,我得到"测试成功,但提供商不接受某些设置".我拿了那根绳子然后用它而且我得到了ADsDSOObject' failed with no error message available, result code: DB_E_ERRORSINCOMMAND(0x80040E14).

Ste*_*eve 23

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

using System.Data.Odbc;

using(OdbcConnection myConnection = new OdbcConnection())
{
    myConnection.ConnectionString = myConnectionString;
    myConnection.Open();

    //execute queries, etc

}
Run Code Online (Sandbox Code Playgroud)

其中myConnectionString是这样的

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

请参见ConnectionStrings

或者,您可以创建DSN,然后在连接字符串中使用该DSN

  • 打开"控制面板" - "管理工具" - "ODBC数据源管理器"
  • 转到系统DSN页面并添加新的DSN
  • 选择Microsoft Access驱动程序(*.mdb)并按END
  • 设置DSN的名称(在此示例中选择MyDSN)
  • 选择要使用的数据库
  • 尝试使用Compact或Recover命令查看连接是否有效

现在你的connectionString可以用这种方式编写

myConnectionString = "DSN=myDSN;"
Run Code Online (Sandbox Code Playgroud)


DEX*_*360 6

这是使用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);
}
Run Code Online (Sandbox Code Playgroud)