# Datenbankverbindung access funtioniert nicht



## tuttti (5. Jan 2012)

hallo,


ich habe win7 64bit und versuche seit tagen den fehler im eclipse zu beseitigen, werd bald wahnsinnig:



```
true
C:\Users\test\Desktop\Schule\Bibliothek Javauebung\buecher.mdb
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 buecherverwaltung.service.BuecherServiceImpl.main(BuecherServiceImpl.java:70)
```

true ist die meldung, dass die datei buecher.mdb existiert, auch kontrolliere ich das, indem ich den pfad der datei ausgeben lasse und das passt so.

java findet den treiber nicht, obwohl ich den korrekt angebe:


```
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			File f = new File("buecher.mdb");
			System.out.println(f.exists());
		
			String datenbank = f.getAbsolutePath();
			System.out.println(f.getAbsolutePath());
			Connection con = DriverManager.getConnection("jdbc:odbc:Driver={Ms Access Database (*.mdb)};"+ "DBQ=" + datenbank);
```


ich habe jetzt viel gelesen und es muss an meinem treiber liegen in der windows architektur. ich habe gelesen, das ich die datenquellen verwaltung über odbcad32.exe starten soll .... jedoch wird das in meinem system schon standartmäßig  gemacht ... ich habe gar keine andere exe in meinem system !!  ich habe den microsoft access driver installiert (microsoft access database engine von der microsoft seite) und access habe ich auch  installiert, aber er ist gar nicht da bzw. ich kann da nichts ändern oder löschen (siehe bilder im anhang) obwohl er in der liste ist. will ich einen hinzufügen, habe ich nur den sql server zur auswahl.

wie krieg ich das problem in den griff ??


----------



## Camill (5. Jan 2012)

Es wird ein Treiber angegeben der nicht existiert, folgendes dürfte klappen:
Englisch: 
	
	
	
	





```
Driver={Microsoft Access Driver (*.mdb)}
```
Deutsch: 
	
	
	
	





```
Driver={Microsoft Access-Treiber (*.mdb)}
```

Zu den Fehlermeldungen auf den Bildern im Anhang kann ich nichts zu sagen.


----------



## tuttti (5. Jan 2012)

nein das wars nicht 


```
String datenbank = f.getAbsolutePath();
			System.out.println(f.getAbsolutePath());
			Connection con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access-Treiber (*.mdb)};"+ "DBQ=" + datenbank);
```


----------



## Camill (5. Jan 2012)

Welcher Fehler tritt auf ?


----------



## tuttti (5. Jan 2012)

hallo,

genau der gleiche .... keine änderung ???:L


----------



## Camill (5. Jan 2012)

Dann liegt der Fehler wohl wircklich an der ODBC-Datenquelle unter Windows, da kann ich dir leider nicht weiterhelfen.


----------



## L-ectron-X (5. Jan 2012)

Vielleicht hilft dir das weiter:
Datenbankverbindung (Java) ? Byte-Welt Wiki


----------



## tuttti (5. Jan 2012)

L-ectron-X hat gesagt.:


> Vielleicht hilft dir das weiter:
> Datenbankverbindung (Java) ? Byte-Welt Wiki



das habe ich auch schon durchgekaut .... genau da liegt das problem :




> Um die Verbindung zu einer Access Datenbank herzustellen, muss man diese erst mal in Windows eingebunden haben, dies geschieht über die Systemsteuerung -> Verwaltung -> Datenquellen (ODBC) hier muss die Datenbank jetzt eingerichtet werden.
> 
> Um diese jetzt in Java zu verwenden, muss wie anfangs schon erwähnt der Treiber geladen und die Verbindung aufgebaut werden.



das problem liegt darin, das ich im datenquellen-dialog von win7 nichts ändern kann, obwohl der treiber in der liste steht.... -> siehe bilder wo ich hochgeladen habe.


----------



## L-ectron-X (5. Jan 2012)

Eigentlich brauchst du nicht unbedingt die ODBC-Anbindung.
Wenn du weiter liest, findest du eine Variante ohne ODBC. Probier die doch einfach mal aus.


----------



## tuttti (5. Jan 2012)

welche meinst du ? 

da steht ja nur noch die unregistrierte weise ... wo mit der verbindung keinen unterschied macht und dann gibts nur noch mysql und andere datenbanken .... ???:L


----------



## pro2 (6. Jan 2012)

Java Library for MS Access benutzen


----------



## Camill (6. Jan 2012)

Eventuell wäre es hilfreich zu wissen welche Architektur verwendet wird (32-/ 64-Bit)?


----------



## tuttti (6. Jan 2012)

hallo,

ich habe immer noch windows7 64 bit  

ich kann mir jetzt schon einen anderen treiber da raufschmeissen, aber dann weiß ich immer noch nicht, warum das mit dem standarttreiber nicht funktioniert, wenn es  bei allen anderen windowsversionen so einfach geht ohne probleme ...

läuft denn das programm auf nem anderen windows mit nem fremden treiber wie jackcess ?


es geht auch darum, das ich mit ein paar kollegen an einem projekt arbeite über maven. wenn ich als einzigster nen anderen treiber benutze als meine kollegen, habe ich den konflikt schon vorprogrammiert....


----------



## mario.nemi78 (6. Jan 2012)

Wenn ich mich noch recht erinnere...

Wenn Du direkt einen Treiber innerhalb des Java Programm verwendest, dann brauchst Du keine Datenbank-Ressource in Windows (ODBC Datenquelle) erstellen. Das ist sowieso besser, weil das Programm dann portabler ist.

Ich hätte ein Code-Beispiel für einen Zugriff auf den mdb, aber die liegt auf Arbeit und heute ist frei. Ich poste die Dir am Montag, vielleicht hilft das dann noch...


----------



## Camill (6. Jan 2012)

tuttti hat gesagt.:


> ich habe immer noch windows7 64 bit



Habe mich mal ein wenig Informiert, auf einem 64-Bit System gibt es anscheinend zwei Versionen der ODBC-Datenquellenverwaltung (32-/64-Bit Version).
Über die Verwaltung wird auf die 64-Bit Version zugegriffen, die 32-Bit Version liegt unter folgendem Pfad: 
	
	
	
	





```
%systemdrive%\Windows\SysWoW64\Odbcad32.exe
```
Dort muss der Treiber hinzugefügt werden da es keinen passenden 64-Bit Treiber für Access gibt.


----------



## pro2 (6. Jan 2012)

tuttti hat gesagt.:


> läuft denn das programm auf nem anderen windows mit nem fremden treiber wie jackcess ?



Damit läuft es sogar auf anderen Betriebssystemen wie Linux, da es ausschließlich in Java geschrieben ist.


----------



## Camill (7. Jan 2012)

Habe nun durch testen und Lesen eine Lösung gefunden.

Wie bereits in meinem letzten Beitrag erwähnt gibt es keinen passenden 64-Bit ODBC-Treiber für Access(zumindest ist mir keiner bekannt), deßhalb muss auf die 32-Bit Version der ODBC-Datenquellenverwaltung zurückgegriffen werden.
Jedoch muss dann ebenfalls eine 32-Bit JVM verwendet werden da sich eine 64-Bit JVM nicht mit einem 32-Bit Treiber "verträgt".


----------



## tuttti (7. Jan 2012)

Camill hat gesagt.:


> Habe mich mal ein wenig Informiert, auf einem 64-Bit System gibt es anscheinend zwei Versionen der ODBC-Datenquellenverwaltung (32-/64-Bit Version).
> Über die Verwaltung wird auf die 64-Bit Version zugegriffen, die 32-Bit Version liegt unter folgendem Pfad:
> 
> 
> ...




ich habe nur diese odbcad32.exe (wie im ersten post geschrieben) !!! ich habe keine andere auf dem system...auch in dem von dir genannten ordner.



> Wenn Du direkt einen Treiber innerhalb des Java Programm verwendest, dann brauchst Du keine Datenbank-Ressource in Windows (ODBC Datenquelle) erstellen. Das ist sowieso besser, weil das Programm dann portabler ist.




Wie siehts dann mit maven aus und meine anderen 2 kollegen, wenn ich einen fremden treiber verwende??



> Jedoch muss dann ebenfalls eine 32-Bit JVM verwendet werden da sich eine 64-Bit JVM nicht mit einem 32-Bit Treiber "verträgt".



wie und wo finde ich heraus, welche version ich installiert habe ?? 


das könnte ein grund sein  ...


----------



## Camill (7. Jan 2012)

tuttti hat gesagt.:


> wie und wo finde ich heraus, welche version ich installiert habe ??


Lass dir mal 
	
	
	
	





```
java -version
```
 ausgeben, wenn dort etwas wie "64-Bit Server" steht wird wahrscheinlich eine 64-Bit Version benutzt.
Ansonsten kann man auch einfach schauen wo das jdk liegt, unter Win7 x64 standardmäßig:

```
%systemdrive%Program Files\Java\
```
 -> 64-Bit

```
%systemdrive%Program Files (x86)\Java\
```
 -> 32-Bit


----------



## tuttti (9. Jan 2012)

war am wochenden unterwegs 

so hab nachgeschaut :

ich habe tatsächlich eine 64bit java engine drauf .... also deinstalliert und java 32bit installiert.

jetzt mault mein eclipse .....er kann jvm.dll nicht laden .... hab eclipse 32bit erneut runtergeladen und das mault jetzt nicht mehr .


hab leider nicht mehr soviel zeit heut abend .... welches java soll ich verwenden jdk oder jre ?? das muss ich noch in 2 variablen der systemumgebung eintragen ... hab jetzt jre7 genommen ..... 


wenn ich jetzt starte kommt kein fehler, aber eclipse beendet sofort die anwendung ohne einen fehler zu bringen .... doch falsches java ?? 


oh mann .... hoffentlich läuft nachher alles wieder ......


----------



## Camill (9. Jan 2012)

Zum Entwicklen von Anwendungen benötigst du das 'jdk', das 'jre' ist nur zum Ausführen von Java-Anwendungen (im 'jdk' ebenfalls enthalten).

Java6 32-Bit
Java7 32-Bit


----------



## tuttti (10. Jan 2012)

hallo,
es funktioniert :applaus:

ich habe verbindung ...... oh mann was für ein akt !!

danke für eure hilfe !


----------

