2012-04-29 9 views
10

Ich versuche, eine Verbindung zu einer MDB-Datei herzustellen, und ich verstehe, dass ich Microsoft.OLEDB.JET.4.0 Datenanbieter benötigen würde. Leider habe ich es nicht auf der (Universität) Maschine installiert. Da sie diesen Anbieter nicht bieten, glaube ich, dass es einen Weg geben sollte.Wie stellt man mit C# eine Verbindung zu einer MS Access-Datei (mdb) her?

Wie kann ich die Datei ohne Microsoft.OLEDB.JET.4.0 verbinden oder gibt es eine Alternative?

Ich habe folgende Anbieter:

Available Ole DB providers

ich versucht habe, mit OLE DB Provider for Microsoft Directory Services, auf die während Verbindung zu testen, habe ich ‚Test erfolgreich, aber einige Einstellungen wurden vom Provider nicht akzeptiert‘. Ich nahm diese Saite und benutzte sie trotzdem und ich bekam ADsDSOObject' failed with no error message available, result code: DB_E_ERRORSINCOMMAND(0x80040E14).

Antwort

18

Der einfachste Weg, um eine Verbindung über einen OdbcConnection ist Code wie dieser

using System.Data.Odbc; 

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

    //execute queries, etc 

} 

wo myConnectionString ist so etwas wie

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

Siehe ConnectionStrings

In alternativen Sie einen DSN erstellen könnte und dann das DSN in der Verbindungszeichenfolge

  • Öffnen Sie die Systemsteuerung - Verwaltung - ODBC-Datenquelle -Manager
  • Gehen Sie zu System-DSN-Seite und ADD ein neuer DSN
  • Wählen Sie den Microsoft Access-Treiber (* .mdb) und drücken Sie END
  • Legen Sie den Namen des DSN (Wählen MyDSN für dieses Beispiel)
  • der Datenbank auswählen zu
  • die Compact Versuchen verwendet werden, oder Befehle wiederherstellen, um zu sehen, ob die Verbindung

arbeitet jetzt Ihre Connection auf diese Weise geschrieben werden konnte

myConnectionString = "DSN=myDSN;" 
+1

Dank 'OdbcConnection' tat es. –

+0

Wenn MDW im Bild ist, können Sie eine andere Verbindungszeichenfolge benötigen. siehe [hier] (http://stackoverflow.com/a/18307822/426315) – itsho

+0

Ziemlich gute Antwort, Sie können auch zu dieser anderen [Frage] (https://stackoverflow.com/questions/18430415/entity) schauen -framework-with-microsoft-access), um zu überprüfen, wie Microsoft Access mit Entity Framewor verwendet wird. –

3

Sie sollten "Microsoft OLE DB Provider für ODBC-Treiber" verwenden, um Zugriff auf Microsoft Access zu erhalten. Hier ist die Probe-Tutorial über die Verwendung es

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

+0

Das gab mir: 'Test-Verbindung fehlgeschlagen aufgrund eines Fehlers in Anbieter initialisiert. Datenquellenname nicht gefunden und kein Standardtreiber angegeben. Glaubst du, dass dieser Anbieter nicht existiert? –

+0

Bitte posten Sie Ihre Verbindungszeichenfolge ... – RajN

+0

entnehmen Sie bitte diesen Link zur Verfügung Verbindungszeichenfolgen http://connectionstrings.com/access-2007 – RajN

0

die Sie interessieren ..

using System.Data.OleDb; 

OleDbConnection dbConn; 

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

Wenn Sie MS Access 2010 verwenden –

+0

ja mit Access 2010, aber die Dateierweiterung ist .mdb –

3

Welche Access File Erweiterung oder Sie verwenden? Der Jet OLEDB oder der Ace OLEDB. Wenn Ihre Access DB ist.mdb (aka 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

Ist die OleDbConnectionStringBuilder-Klasse nicht die bessere Lösung? http://msdn.microsoft.com/de-de/library/system.data.oledb.oledbconnectionstringbuilder(v=vs.110).aspx – uli78

3

Hier ist, wie ein Jet OLEDB oder Ace OLEDB Zugang DB zu verwenden:

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

Eine weitere einfachste Art und Weise zu verbinden ist durch eine OdbcConnection mit App.config Datei wie folgt

MyDB.mdb ist meine Datenbankdatei, und es ist im aktuellen primären vorhanden Anwendungsordner mit Haupt-EXE-Datei.

wenn Ihre MDF-Datei hat Passwort dann wie diese verwenden

<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> 
Verwandte Themen