web-dev-qa-db-de.com

Wie verbinde ich mich mit C # mit einer MS Access-Datei (mdb)?

Ich versuche, eine Verbindung zu einer MDB-Datei herzustellen, und ich verstehe, dass ich Microsoft.OLEDB.JET.4.0 Datenanbieter brauche. Leider habe ich es nicht auf dem (Universitäts-) Rechner installiert ..__ Da sie diesen Anbieter nicht anbieten, glaube ich, dass es einen Ausweg geben sollte. 

Wie kann ich ohne Microsoft.OLEDB.JET.4.0 eine Verbindung zur Datei herstellen, oder gibt es eine Alternative?

Ich habe folgende Anbieter:

Available Ole DB providers

Ich habe versucht, OLE DB Provider for Microsoft Directory Services zu verwenden, bei dem beim Testen der Verbindung die Meldung "Test erfolgreich war, aber einige Einstellungen wurden vom Anbieter nicht akzeptiert wurden" angezeigt. Ich habe diese Saite genommen und trotzdem benutzt und ich bekam ADsDSOObject' failed with no error message available, result code: DB_E_ERRORSINCOMMAND(0x80040E14).

12
Sushan Ghimire

Die einfachste Art, eine Verbindung herzustellen, ist eine OdbcConnection, die Code wie diesen verwendet

using System.Data.Odbc;

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

    //execute queries, etc

}

wobei myConnectionString so etwas ist

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

Siehe ConnectionStrings

Alternativ können Sie einen DSN erstellen und diesen DSN dann in Ihrer Verbindungszeichenfolge verwenden

  • Öffnen Sie die Systemsteuerung - Verwaltung - ODBC Datenquelle Manager
  • Wechseln Sie zur Seite System-DSN, und fügen Sie einen neuen DSN hinzu
  • Wählen Sie den Microsoft Access-Treiber (* .mdb) und drücken Sie ENDE
  • Legen Sie den Namen des DSN fest (wählen Sie MyDSN für dieses Beispiel).
  • Wählen Sie die zu verwendende Datenbank aus
  • Versuchen Sie es mit den Befehlen Compact oder Recover, ob die Verbindung funktioniert

nun könnte Ihr connectionString auf diese Weise geschrieben werden

myConnectionString = "DSN=myDSN;"
22
Steve

So verwenden Sie eine Jet-OLEDB- oder Ace-OLEDB-Zugriffs-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);
}
4
DEXTER360

Welche Access-Dateierweiterung verwenden Sie? Die Jet-OLEDB oder die Ace-OLEDB ... Wenn Ihre Access-Datenbank ".mdb" ist (auch Jet Oledb genannt)

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;
        }
    }
}
3
Bon

Sie sollten "Microsoft OLE DB Provider for ODBC Drivers" "verwenden, um auf Microsoft Access zugreifen zu können. Hier ist das Beispiel-Tutorial zur Verwendung

http://msdn.Microsoft.com/de-de/library/aa288452(v=vs.71).aspx

3
RajN

Versuche dies..

using System.Data.OleDb;

OleDbConnection dbConn;

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

Eine andere einfachste Möglichkeit, eine Verbindung herzustellen, ist eine OdbcConnection -Datei mit der folgenden Datei: App.config

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

MyDB.mdb ist meine Datenbankdatei und befindet sich im aktuellen primären Anwendungsordner mit der Haupt-Exe-Datei.

wenn Ihre MDF-Datei ein Kennwort hat, verwenden Sie diese Option

  <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>
0
Durgesh Pandey