Abfragt Jet Datenbanken / Excel-Dateien mit C # unter x64 OS
Frage
So habe ich gelernt, dass die Microsoft.Jet.OLEDB.4.0 Datenprovider für die Abfrage von Datenquellen wie Microsoft Access MDB-Dateien und Excel-Tabellen funktioniert nicht unter einem Windows-64-Bit-Betriebssystemen.
Was ich jetzt in .NET 3.5 (C #) Anwendungen abzufragen, um gegen diese Dateitypen verwenden, ich soll die Kompatibilität in x86- und x64-Umgebungen zu gewährleisten? Ich gescheuert haben das Internet und ich kann nicht scheinen, eine klare Antwort zu finden, wie diese Inkompatibilität zu behandeln.
Ich habe auch versucht, ohne Glück einen ODBC-Provider und einen MSDASQL-Anbieter verwenden, da sie die gleichen Ausnahmen wie der Microsoft.JET.OLEDB.4.0 Anbieter zu werfen scheinen, wenn in einer x64-Umgebung verwendet (es sei denn, ich etwas tue eklatant falsch mit diesen beiden anderen Anbietern, obwohl sie unter in meinem Windows XP x86-Umgebung gut funktionieren).
Ich habe Leute gefunden, dass ich % windir% \ System32 \ odbcad32.exe für ODBC-Konnektivität in x64-Systemen verwenden müssen, aber ich habe auf Vorstellung davon, wie diese zu nutzen.
Beispiel Exeption Geworfen unter x64:
************** Ausnahmetext ************** System.InvalidOperationException: Der ‚Microsoft.Jet.OLEDB.4.0‘ Anbieter ist auf dem lokalen Computer nicht registriert. bei System.Data.OleDb.OleDbServicesWrapper.GetDataSource (OLEDBConnectionString constr, DataSourceWrapper & datasrcWrapper) bei System.Data.OleDb.OleDbConnectionInternal..ctor (OLEDBConnectionString constr, OleDbConnection Verbindung) bei System.Data.OleDb.OleDbConnectionFactory.CreateConnection (DbConnectionOptions Optionen, Objekt poolGroupProviderInfo, DbConnectionPool Pool, DbConnection owningObject)
Lösung
Alles, was ich in meiner eigenen jüngsten Forschung gesehen habe bestätigt, was Sie sehen -, dass es einfach ist keine 64-Bit-Jet-Treiber. Auch fand ich einen Beitrag auf
Andere Tipps
, was passiert hier ist, dass eine x64 Baugruppe versucht, eine x86-COM-Komponente aufzurufen. Der x64-App wird nicht die COM-Registrierungen in der primären x64-Registrierung sehen, da theyre in der Wow6432Node hive.
Die einfachste Abhilfe ist die Anwendung mit einer x86-Zielplattform zu bauen und lassen Sie es auf der WOW später auf Ihrer x64-Maschine laufen. Die App wird als 32-Bit läuft und Lage sein, die 32-Bit-COM-Objekte zu sehen, die es braucht.
Es gibt jetzt ein 64-Bit-ODBC-Treiber für JetSQL. Es ist die Microsoft Access-Datenbank-Engine 2010 Redistributable . Ich habe es nicht für OLEDB verwendet, aber ich habe es neue Microsoft Access-Datenbanken mit Powershell .