Was ist der ConnectionString zu erstellen, ein OdbcConnection-für eine access-mdb-Datei

Ich möchte eine Verbindung von c# zu einer Access-MDB-Datei mithilfe von Odbc.

Wenn ich versuche ausführen

OdbcConnection con = new OdbcConnection(
    "Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\\temp\\test.mdb;");

Bekomme ich die folgende exception:

exc {System.Data.Odbc.OdbcException (0x80131937): ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
   at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
   at System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection connection, OdbcConnectionString constr, OdbcEnvironmentHandle environmentHandle)
   at System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.Odbc.OdbcConnection.Open()
   :

Was ist hier das Problem? Es beschwert sich über die "name der Datenquelle nicht gefunden und kein Standardtreiber angegeben", aber ich angegeben einen Treiber?

Bekam ich den connectionstring mit Hilfe von hier http://www.connectionstrings.com/access#net-framework-data-provider-for-odbc

  • können Sie ersetzen Sie den Pfad mit c:\\temp\\test.mdb zu c:\temp\test.mdb . dann versuchen Sie es erneut.
  • In C# verwenden Sie entweder eine wörtliche Zeichenfolge und verwenden Sie einfache umgekehrte Schrägstriche oder ein normaler string und verwenden Sie doppelte umgekehrte Schrägstriche: @"c:\temp\test.mdb" oder "c:\\temp\\test.mdb".
  • Könnte es sein, das provider-Zeichenfolge, die es nicht erkennen - es kann ein bisschen iffy über, die. Prüfen Sie hier: connectionstrings.com/access-2007 sieht aus wie Sie haben zu verwenden Driver=, nicht sicher, ob das das gleiche ist wie Provider= aber die Seite scheint den Unterschied machen für ODBC - vielleicht fehlt Ihnen nur noch eine Erweiterung Namen des Fahrers name
  • Die Jet-ODBC-provider-Zugriff ist nur auf 32-bit-Anwendungen. Wenn Ihr c# Projekt Kompilier-Ziel 64 bit (mit jeder cpu), ändern Sie es auf x86.
  • HansUp ist richtig, ich habe gerade herausgefunden mich und postet es als Antwort. @Charleh: Sie verwenden Driver= Odbc und Provider= für OldDB. Ihre Connection strings sind unterschiedlich und Sie können nicht verwenden Sie eine für die anderen.
InformationsquelleAutor marc40000 | 2013-01-28
Schreibe einen Kommentar