2012-04-29 23 views
10

Estoy tratando de conectarme a un archivo mdb y entiendo que necesitaría el proveedor de datos Microsoft.OLEDB.JET.4.0. Desafortunadamente, no lo tengo instalado en la máquina (de la Universidad). Dado que no proporcionan ese proveedor, creo que debería haber una forma de evitarlo.Cómo conectarse a un archivo de MS Access (mdb) usando C#?

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

He siguientes proveedores:

Available Ole DB providers

He intentado usar OLE DB Provider for Microsoft Directory Services, a los que durante las pruebas de conexión, lo entiendo 'prueba tuvo éxito, pero algunos ajustes no fueron aceptadas por el proveedor'. Tomé esa cadena y la usé de todos modos y obtuve ADsDSOObject' failed with no error message available, result code: DB_E_ERRORSINCOMMAND(0x80040E14).

Respuesta

18

La forma más sencilla de conectar es a través de un OdbcConnection utilizando 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 se podría crear un DSN y luego utilizar ese DSN en la cadena de conexión

  • Abra el Panel de control - Herramientas administrativas - ODBC Data Source Gestor
  • Ir a la Sistema DSN Página y AGREGAR un nuevo DSN
  • Elija el controlador de Microsoft Access (* .mdb) y presione END
  • Establezca el nombre del DSN (Elija MiDSN para este ejemplo)
  • Seleccione la base de datos que se utilizará
  • Prueba el compacto o recuperar comandos para ver si la conexión funciona

ahora su connectionString podría escribirse de esta manera

myConnectionString = "DSN=myDSN;" 
+1

Gracias 'OdbcConnection' lo hizo. –

+0

cuando MDW está en la imagen, puede necesitar una cadena de conexión diferente. vea [aquí] (http://stackoverflow.com/a/18307822/426315) – itsho

+0

Muy buena respuesta, también puede echarle un vistazo a esta otra [pregunta] (https://stackoverflow.com/questions/18430415/entity -framework-with-microsoft-access) para comprobar cómo usar Microsoft Access con Entity Framewor. –

3

Debe utilizar "Proveedor Microsoft OLE DB para controladores ODBC" para obtener acceso a Microsoft Access. A continuación se muestra el tutorial sobre el uso que

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

+0

Eso me dio: 'conexión de prueba debido a un error al inicializar el proveedor. Nombre de fuente de datos no encontrado y no se especificó ningún controlador por defecto. ¿Crees que este proveedor no existe? –

+0

por favor, puesto que su cadena de conexión ... – RajN

+0

favor refiérase este enlace para cadenas de conexión disponibles http://connectionstrings.com/access-2007 – RajN

0

Prueba esto ..

using System.Data.OleDb; 

OleDbConnection dbConn; 

dConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Registration.accdb;"); 
+0

Si está utilizando MS Access 2010 –

+0

sí con Access 2010 pero la extensión de archivo es .mdb –

3

¿Qué extensión de archivo de acceso utiliza? 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; 
     } 
    } 
} 
+1

¿No es la clase OleDbConnectionStringBuilder la mejor solución? http://msdn.microsoft.com/de-de/library/system.data.oledb.oledbconnectionstringbuilder(v=vs.110).aspx – uli78

3

Así es como usar un Jet OLEDB o As OLEDB de acceso 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); 
} 
0

Otra forma más sencilla de conectar es a través de un OdbcConnection usando App.config archivo como este

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

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

si el archivo mdf tiene contraseña a continuación, utilizar como esto

<appSettings> 
    <add key="Conn" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|MyDB.mdb;Persist Security Info=True;Jet OLEDB:Database [email protected]"/> 
    </appSettings> 
Cuestiones relacionadas