Access Datenbank mit Java auf win7 64bit

KYL3R

Mitglied
MySQL ist nicht unbedingt treffend, weis ich.

Folgendes: Ich arbeite an einem 64bit Rechner (Windows 7) und komme nicht um den Fehler herum, den eclipse ausgibt :
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at gui.Hauptfenster.aktualisiereTabelle(Hauptfenster.java:28)
at gui.Hauptfenster.<init>(Hauptfenster.java:17)
at gui.Hauptfenster$1.run(Hauptfenster.java:79)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Der Anfang is eher wichtig : Der JDBC Treiber wird nicht gefunden, laut Foren weil ich ne DSN anlegen muss oder so. Ich habe schon viel Probiert.
Fakt ist : Ich habs auf meinem 2.rechner ausprobiert und da der auf 32bit läuft geht es ohne Probleme. Daher jetzt die Frage an euch : Was muss ich alles uminstallieren, damit es auf meinem 64bit rechner läuft?
Ich hab gehört office neu installieren, aber da konnte ich nicht auswählen wieviel bit ich will, beim installieren einer 64bit Database-engine "AccessDatabaseEngine_x64.exe" sagt mir ein dialogfeld, dass ich das nicht installieren kann wenn ich 32bit office programme habe, ich sollte es deinstallieren. Hab ich gemacht, dann 64bit engine installiert, dann win office installiert, aber jetzt hab ich wieder die 32bit engine -.-
Reicht es denn wenn ich iwoher ne 64bit win office version bekomme `?
mit :
Java:
 String a = System.getProperty("sun.arch.data.model");
		 System.out.println(a);
		 [JAVA/][/QUOTE]
Habe ich jetzt nochmal überprüft, dass meine JVM 64bit ist, aber ist es auch mein JDK ? Oder brauch ich noch 64bit eclipse ?`(hab ich glaube sogar schon, falls es das gibt... hab schon soviel gemacht...)

Also meine Frage nochmal klar formuliert : Was muss ich tun, damit ich auf die Datenbank zugreifen kann, was mir momentan nur auf 32bit möglich ist?

Danke euch :)
 
Zuletzt bearbeitet von einem Moderator:
Der Anfang is eher wichtig : Der JDBC Treiber wird nicht gefunden
Auch wenn sich die Fehlermeldung so anhört. Hier wird die Datenbank nicht gefunden.
Wie wird die Verbindung zur Datenbank aufgebaut? Code
Ich hab gehört office neu installieren, aber da konnte ich nicht auswählen wieviel bit ich will, beim installieren einer 64bit Database-engine "AccessDatabaseEngine_x64.exe" sagt mir ein dialogfeld, dass ich das nicht installieren kann wenn ich 32bit office programme habe, ich sollte es deinstallieren. Hab ich gemacht, dann 64bit engine installiert, dann win office installiert, aber jetzt hab ich wieder die 32bit engine -.-
Reicht es denn wenn ich iwoher ne 64bit win office version bekomme `?
mit :
Auf dem Rechner muss kein Office oder Access installiert sein, wichtig ist nur das die Treiber vorhanden sind (Sind standardmäßig auf Windows Betriebssystemen eingerichtet)

Mal geraten:
Es wird versucht per
Code:
Connection con = DriverManager.getConnection("jdbc:odbc:MeineDatenbank");
eine Verbindung zur DB aufzubauen. Das setzt voraus, dass die Datenbank als Benuter-DSN oder System-DSN in Windows eingetragen ist.
 
Erstmal danke für die Antwort.
Also, ich rufe die Datenbank so auf :
PHP:
Connection con=DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/Dokumente und Einstellungen/Kai/workspace/kontakte.mdb","","" );

Der Code ist ein Beispiel aus dem Netz.

Auf dem 64bit rechner bekomme ich immer die meldung, auf dem 32bit rechner bekomme ich nur eine, wenn ich im Pfad fehler mache, dann jedoch eine andere als auf dem 64bit rechner.

Wenn der Pfad nicht stimmt, bemerkt das der 64bit rechner nicht, da der code vorher schon fehler wirft.
Der 32bit rechner spuckt bei falschem Pfad das hier aus :
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] '(unbekannt)' ist kein zulässiger Pfad. Stellen Sie sicher, dass der Pfad richtig eingegeben wurde und dass Sie mit dem Server, auf dem sich die Datei befindet, verbunden sind.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
[...]

Der unterscheidet sich von der anderen meldung. einmal heist es, der treiber wird nicht gefunden, bei falschem pfad wird das explizit geschrieben :" ist kein zulässiger Pfad. "

Wenn der Pfad stimmt, geht es ohne jegliche Fehler (32bit)

Was ich vllt noch erwähnen sollte, es gibt bei windows 7 so ne datei die heist ODBCAD32. Da stand im Internet zu meinem Problem, dass man als 64bit win7 Nutzer in system32 die 32bit version davon nutzen soll statt der 64er, in system32 hab ich keine 64bit version gefunden, daher habe ich das problem nicht, aber es ist nicht unwarscheinlich, dass sie in einem anderen ordner liegt, eben nicht system "32" .

Die habe ich jedoch manuell ausgeführt und ne system dsn eingerichtet. Ne user dsn und was es da nicht alles gab. ich habe die jenige Datenbank eingetragen etc. Ich glaube alles richtig gemacht zu haben, aber es ist immernoch der gleiche fehler.

Übrigens ist der 32bit-rechner win XP pro und da habe ich absolut NICHTS eingestellt, keine dsn oder so, es lief aus eclipse heraus ohne weiteres :/

Fällt dir noch etwas ein, nachdem was ich nun geschrieben habe ? Sonst müssten wir das mit den DSN nochmal genauer betrachten, vllt habe ich da noch iwas falsch gemacht.
 
also in windows 7 64 bit wird odbc nicht auf 64 bit unterstützt also über system verwalten datenquellen etc.. das funktioniert nicht hatte ich das gleiche problem mal da musst du den treiber mehr oder weniger mit dem 32 bit programm davon einrichten das sehrwohl im system32 ordner ist und odbcad32.exe heißt da kannst du dann den odbc treiber einrichten damit du dich auf die datenbank connecten kannst da brauchst du auch nicht den kompletten pfad angeben sondern kannst das mit dem benannten treiber z.b.: ACCdb oder sowas einfach zugreifen mit

Java:
Connection con=DriverManager.getConnection( "jdbc:odbc:TREIBERNAME");

den treiber name den du angegeben hast hoffe das hilft dir
 
Habe gerade mal hier auf einer Win 7 64bit Maschine getestet und konnte keine Probleme beim Zugriff wie folgt feststellen:
Java:
Connection con=DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/Dokumente und Einstellungen/Kai/workspace/kontakte.mdb","","" );
Zum Testen würde ich allerdings ein anderes Verzeichnis nehmen z.B:
Code:
c:/temp
 
also in windows 7 64 bit wird odbc nicht auf 64 bit unterstützt also über system verwalten datenquellen etc.. das funktioniert nicht hatte ich das gleiche problem mal da musst du den treiber mehr oder weniger mit dem 32 bit programm davon einrichten das sehrwohl im system32 ordner ist und odbcad32.exe heißt da kannst du dann den odbc treiber einrichten damit du dich auf die datenbank connecten kannst da brauchst du auch nicht den kompletten pfad angeben sondern kannst das mit dem benannten treiber z.b.: ACCdb oder sowas einfach zugreifen mit

Java:
Connection con=DriverManager.getConnection( "jdbc:odbc:TREIBERNAME");

den treiber name den du angegeben hast hoffe das hilft dir



In der Tat, obwohl es auf meinem 32bit rechner so :
Java:
Connection con=DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/Dokumente und Einstellungen/Kai/workspace/kontakte.mdb","","" );
ging, musste ich es auf meinem 64bit rechner so machen:
Java:
Connection con=DriverManager.getConnection( "jdbc:odbc:TREIBERNAME")
Die Methode, ohne die Registrierung des ODBC Treibers (hier) habe ich nicht getestet, da es jetzt auch so geht, und laut L-ectron-X nur auf windows laufen würde, bin ich froh, dass es jetzt auch so geht.

Wenn es nicht geht, und man nicht weis warum, ist sowas :"TREIBERNAME" immer etwas verwirrend, nachdem ich mehrere DSN eingerichtet hatte und alle nur meinten "richte ne dsn ein" war ich irgendwann durcheinander und wusste nicht wo der fehler liegt.

Daher, (da ich es nun verstanden habe und es bei mir geht) jetzt nochmal eine Zusammenfassende Bilder-Erklärung die auch für 64bit nutzer funktionieren sollte :

unbenannt12h.jpg


als link :

Vielen Dank an alle, die Tipps haben sehr geholfen. Ich hatte immer so viel krams mitgeschrieben :
"jdbc😱dbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/Dokumente und Einstellungen/Kai/workspace/kontakte.mdb","","" )
dabei geht es tatsächlich einfach so :
Connection con=DriverManager.getConnection( "jdbc😱dbc:MS Access Database","","" );

In den Bildern wirds nochmal erklärt. All denen, die diesen Thread irgendwann mal lesen wird es hoffentlich helfen.
 
Ich bekomme den Fehler:

Code:
[Microsoft][ODBC Driver Manager] Der angegebene DSN weist eine nicht übereinstimmende Architektur von Treiber und Anwendung auf.


Nutze auch Win7 64bit und habe die Datenbank bzw DSN mit der Datei in dem SysWOW64 Ordner genutzt.

Die Datenbank wird auch gefunden, sonst würde die Fehlermeldung eine andere sein.

Java:
public static Connection dbConnect(String databasePath){
		Connection conn = null;
		//String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
		try {
        System.out.println("Pfad: "+databasePath);         
        	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    	
              conn = DriverManager.getConnection( "jdbc:odbc:BUERO","","" );
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
       System.out.println(e.toString());
                     
                    e.printStackTrace();
			//System.out.println("Kann keine Verbindung zur Datenbank Herstellen: "+databasePath );
		}
		System.out.println("Connected to " + conn);
		return conn;
		
}


Wie kann ich den oberen Fehler lösen?

Danke 😉
 
Ich bekomme den Fehler:

Code:
[Microsoft][ODBC Driver Manager] Der angegebene DSN weist eine nicht übereinstimmende Architektur von Treiber und Anwendung auf.
Das hört sich danach an, dass die Windows Treiber Konfiguration nicht passt. Lässt sich den mittels "Test Connection" - keine Ahnung, ob das unter Win7 auch so heißt - eine Verbindung aufbauen?
 
Mit OpenOffice Base kann ich ohne weiteres auf die DSN zugreifen usw. ich denke da dürfte alles passen... nur wo sind jetz der/die fehler :/
 
Ich sehe gerade Du nutzt den Sun ODBC Treiber. Meines Wissens war der nie für eine Produktivnutzung konzipiert und es kann durchaus sein, dass er mit der Access DB (dass sich sowas DB nennen darf ;-)) nicht funktioniert.
Hab mich allerdings schon seit Ewigkeiten nicht mehr damit beschäftigt.
 
Ist wohl eine 32bit/64bit Thematik. Dazu sollte es hier Leute geben die diesbzgl. mehr Ahnung haben als ich. Nutzt Du ein 32bit oder 64bit JDK und läuft das Programm dann als 32bit oder 64bit Anwendung. Ich glaube das muss alles irgendwie zusammen passen - habe aber wie gesagt nicht wirklich Ahnung.
 
es scheint am rechner zu liegen, da auf einem anderen 64 bit system das ganze läuft -.-' tut mir leid für die aufregung und danke für die hilfen 😉
 

Zurück
Oben