2012-12-24 23 views
7

Używam programu Microsoft Access do utworzenia mojej bazy danych. Oto mój kod:Jak otworzyć połączenie z bazą danych programu Microsoft Access w języku C#

static string Constr = "Provider=Microsoft.Jet.OLEDB.4.0;" 
        + "Data Source = MyData.accdb"; 
OleDbConnection Conn = new OleDbConnection(Constr); 
DataSet DataSet1 = new DataSet(); 
string SQLstr = "Select * from Tabel"; 
OleDbDataAdapter DataAdapter1; 
Conn.Open(); 

Dostaję ten wyjątek:

nieobsługiwany wyjątek typu 'System.Data.OleDb.OleDbException' wystąpił w module system.data.dll

dodatkowe informacje: Nierozpoznany format bazy danych

+8

http://www.connectionstrings.com/access-2007 – SLaks

+0

Jaką wersję utworzonej bazy danych MS Access? –

+0

Używam MS Access 2010 –

Odpowiedz

7

Próbujesz otworzyć bazę danych Access utworzoną za pomocą programu Access 2007/2010 (accdb) z dostawcą OleDb, który nie rozumiem tylko plików MDB utworzonych za pomocą programu Access 2003

Dostawca do użycia to Microsoft.ACE.OleDB.12.0, który powinien być już zainstalowany z najnowszą wersją pakietu Office.

Alternatywnie można pobrać odpowiednie bity z Microsoft Access Database Engine

I to jest ciąg połączenia użyć

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=MyData.accdb"; 

UWAGA: Należy pamiętać, że jeśli masz zainstalowany Office odpowiedni dostawca ma taką samą bitness Biura, więc z kancelarii 64bit pochodzi ACE w wersji 64-bitowej i tak samo dla 32bit. Ten scenariusz stanowi bardzo trudny problem podczas wdrażania aplikacji. Musisz mieć aplikację skompilowaną z tą samą wersją, lub nie będziesz mógł skorzystać z zainstalowanego dostawcy. (Albo zdeinstaluj niekompatybilną wersję pakietu Office i zainstaluj ponownie zgodną, ​​oczywiście, jeśli powinieneś być w stanie przekonać klienta, że ​​Office to niekompatybilna aplikacja :-)

+0

Zmodyfikowałem mój ciąg na "static string Constr =" Provider = Microsoft.ACE.OLEDB.12.0; Data Source = MyData.accdb ";' Otrzymuję wyjątek 'Nieobsługiwany wyjątek typu "System.InvalidOperationException" wystąpił w System.Data.dll Dodatkowe informacje: Dostawca "Microsoft.ACE.OLEDB.12.0" nie jest zarejestrowany na komputerze lokalnym. " –

+1

Może to być spowodowane przez sterownik ACE nie zainstalowany lub 32-bitowy sterownik zainstalowany, ale twoja aplikacja jest skompilowana dla AnyCPU i pracujesz na 64-bitowym systemie operacyjnym. Czy masz 32-bitowe Office zainstalowane na 64-bitowym systemie operacyjnym? – Steve

Powiązane problemy