How to connect to a MS Access file (mdb) using C#?

c#, ms-access, oledb

Solution

The simplest way to connect is through an OdbcConnection using code like this

using System.Data.Odbc;

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

    //execute queries, etc

}

where myConnectionString is something like this

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

See ConnectionStrings

In alternative you could create a DSN and then use that DSN in your connection string

- Open the Control Panel - Administrative Tools - ODBC Data Source Manager

- Go to the System DSN Page and ADD a new DSN

- Choose the Microsoft Access Driver (*.mdb) and press END

- Set the Name of the DSN (choose MyDSN for this example)

- Select the Database to be used

- Try the Compact or Recover commands to see if the connection works

now your connectionString could be written in this way

myConnectionString = "DSN=myDSN;"

Problem

I'm trying to connect to a mdb file and I understand that I would need `Microsoft.OLEDB.JET.4.0` data provider. Unfortunately, I do not have it installed on the (University) machine. Since, they don't provide that provider, I believe there should be a way around. How can I connect to the file without `Microsoft.OLEDB.JET.4.0` or is there any alternative ? I have following providers: I have tried using `OLE DB Provider for Microsoft Directory Services`, to which while testing connection, I get 'Test succeeded but some settings were not accepted by the provider'. I took that string and used it anyway and I got `ADsDSOObject' failed with no error message available, result code: DB_E_ERRORSINCOMMAND(0x80040E14)`.

Original source

Related problems