# Access Datenbank mit Java auf win7 64bit



## KYL3R (17. Jul 2011)

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)
> ...



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 :


> ```
> String a = System.getProperty("sun.arch.data.model");
> System.out.println(a);
> [JAVA/][/QUOTE]
> ...


----------



## Michael... (17. Jul 2011)

KYL3R hat gesagt.:


> 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


KYL3R hat gesagt.:


> 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 
	
	
	
	





```
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.


----------



## KYL3R (17. Jul 2011)

Erstmal danke für die Antwort. 
Also, ich rufe die Datenbank so auf :


> ```
> 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.


----------



## L-ectron-X (17. Jul 2011)

Das kann helfen: Datenbankverbindung (Java) - Byte-Welt Wiki
Das funktioniert aber nur unter Windows. Wenn du unter Linux eine Access-DB einbinden möchtest, brauchst du einen externen Treiber. Z.B. Jackcess - Java Library for MS Access

Edit: Hat bei mir auch unter Windows 7 64Bit funktioniert.


----------



## Rin (18. Jul 2011)

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 


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

den treiber name den du angegeben hast hoffe das hilft dir


----------



## Michael... (18. Jul 2011)

Habe gerade mal hier auf einer Win 7 64bit Maschine getestet und konnte keine Probleme beim Zugriff wie folgt feststellen:


KYL3R hat gesagt.:


> ```
> 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: 
	
	
	
	





```
c:/temp
```


----------



## KYL3R (18. Jul 2011)

Rin hat gesagt.:


> 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
> 
> 
> ```
> ...





In der Tat, obwohl es auf meinem 32bit rechner so :

```
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:

```
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 :







als link : 





> ImageShack® - Online Photo and Video Hosting



Vielen Dank an alle, die Tipps haben sehr geholfen. Ich hatte immer so viel krams mitgeschrieben :


> "jdbcdbc: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( "jdbcdbc:MS Access Database","","" );



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


----------



## Agassiz (16. Nov 2011)

Ich bekomme den Fehler:


```
[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.


```
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


----------



## Michael... (16. Nov 2011)

Agassiz hat gesagt.:


> Ich bekomme den Fehler:
> 
> 
> ```
> ...


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?


----------



## Agassiz (16. Nov 2011)

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 :/


----------



## Michael... (16. Nov 2011)

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.


----------



## L-ectron-X (16. Nov 2011)

Agassiz hat gesagt.:


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


Achso? Was gibt dir die Gewissheit?



Agassiz hat gesagt.:


> ```
> conn = DriverManager.getConnection( "jdbc:odbc:BUERO","","" );
> ```


Woher kommt denn der Treibername BUERO? Der wird doch nirgends eingeführt.
Hast du mal die Variante aus dem Wiki probiert?


----------



## Agassiz (16. Nov 2011)

> Achso? Was gibt dir die Gewissheit?



Ich habe die DSN mal falsch geschrieben und da kam auch ne andere Fehlermeldung.




> Woher kommt denn der Treibername BUERO? Der wird doch nirgends eingeführt.
> Hast du mal die Variante aus dem Wiki probiert?



BUERO ist doch der name der DSN die ich erstellt habe (mit dem syswow64/odbc tool).
Oder wo muss ich das noch angeben?


----------



## Michael... (16. Nov 2011)

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.


----------



## Agassiz (16. Nov 2011)

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


----------

