Cómo conectarse a un archivo de MS Access (mdb) usando C #?

Intento conectarme a un archivo mdb y entiendo que necesitaría Microsoft.OLEDB.JET.4.0 proveedor de datos Microsoft.OLEDB.JET.4.0 . Desafortunadamente, no lo tengo instalado en la máquina (de la Universidad). Como no proporcionan ese proveedor, creo que debería haber una forma de evitarlo.

¿Cómo puedo conectarme al archivo sin Microsoft.OLEDB.JET.4.0 o hay alguna alternativa?

Tengo los siguientes proveedores:

Proveedores disponibles de Ole DB

Intenté usar OLE DB Provider for Microsoft Directory Services , a la cual al probar la conexión, obtengo ‘Test succeeded but some settings no fueron aceptados por el proveedor’. ADsDSOObject' failed with no error message available, result code: DB_E_ERRORSINCOMMAND(0x80040E14) esa cadena y la usé de todos modos y obtuve el ADsDSOObject' failed with no error message available, result code: DB_E_ERRORSINCOMMAND(0x80040E14) .

La forma más sencilla de conectarse es a través de OdbcConnection usando un código como este

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

donde myConnectionString es algo como esto

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

Ver ConnectionStrings

En alternativa, podría crear un DSN y luego usar ese DSN en su cadena de conexión

  • Abra el Panel de control – Herramientas administrativas – ODBC Data Source Manager
  • Vaya a la página de DSN del sistema y AGREGUE un nuevo DSN
  • Elija el controlador de Microsoft Access (* .mdb) y presione END
  • Establezca el nombre del DSN (elija MyDSN para este ejemplo)
  • Seleccione la base de datos que se utilizará
  • Pruebe los comandos Compactar o Recuperar para ver si la conexión funciona

ahora su connectionString podría escribirse de esta manera

 myConnectionString = "DSN=myDSN;" 

A continuación, se indica cómo utilizar un DB de acceso Jet OLEDB o Ace OLEDB:

 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); } 

Debe utilizar “Proveedor Microsoft OLE DB para controladores ODBC” para obtener acceso a Microsoft Access. Aquí está el tutorial de muestra sobre cómo usarlo

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

¿Qué extensión de archivo de acceso usas? El Jet OLEDB o el Ace OLEDB. Si su Access DB es .mdb (también conocido como 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; } } } 

Prueba esto..

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

Otra forma más simple de conectarse es a través de un OdbcConnection usando el archivo App.config como este

     

MyDB.mdb es mi archivo de base de datos y está presente en la carpeta principal de la aplicación actual con el archivo exe principal.

si su archivo mdf tiene una contraseña, utilícela como esta