# Anbindung einer Datenbank an Java



## sabbergesicht (24. Apr 2012)

Hi,

ich wollte mich hier mal nach etwas Hilfe umsehen da ich leider vor einem Wald stehe, diesen jedoch nicht zu sehen scheine.

http://www.java-forum.org/datenbank...-db-anbindung-zuweisung-fehlgeschlagen-2.html

Hier wurde schon ein ähnlicher Fehler wie der meine verarbeitet, jedoch konnte ich dort keine für mich nützlichen Dinge in Erfahrung bringen, oder keine, die wie ich denke auf meinen speziellen Fall passen (ja, ich möchte ein Unikum sein).

Daher mal mein Problem: Ich versuche seit geraumer Zeit Zugriff auf eine Datenbank via Java zu bekommen, ziel ist es dort Werte zur weiteren Verarbeitung auszulesen (welch Überraschung).
Leider klappt das mit der eigentlichen Datenbank noch nicht so und ich dachte mir, fang ich klein an.

Habe also eine Access DB auf meinem Lokalen Rechner erstellt und gespeichert, aber wenn ich Versuche drauf zuzugreifen passiert folgendes:

Der Quellcode:


```
public class main {

	/**
	 * @param args
	 * @throws ClassNotFoundException 
	 * @throws SQLException 
	 */
	public static void main(String[] args) throws ClassNotFoundException, SQLException {

		*ENTFERNTE VARIABLENDEKLARATION*		
		
		for (Enumeration<Driver> e = DriverManager.getDrivers(); e.hasMoreElements(); )
			System.out.println(e.nextElement().getClass().getName());

		try {
		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		
		//Connection cn = DriverManager.getConnection("jdbc:odbc:" + sDsn, dbUsr, dbPwd);
		
		//fuer lokal gespeicherte access datenbank ???!
		Connection cn = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ = PFAD\\DBVersuche\\datenbank1.mdb");
		
		cn.close();
		
		} catch (java.lang.Exception e) {
			
			e.printStackTrace();
			
		}
	}

}
```

Der Ausgegeben Fehler lautet:

sun.jdbc.odbc.JdbcOdbcDriver
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Kein zulässiger Dateiname.
	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 main.main(main.java:38)

(PS: Die erste Zeile ist die Ausgabe der for, also meine DB Driver wenn ich das richtig Verstanden habe)

Ich weiß mittlerweile nicht mehr woran es liegt oder liegen könnte und hoffe daher, hier kompetente Hilfe zu finden.

mkg benni


PS.: Ich weiß auch was ein String ist :toll:


----------



## sabbergesicht (24. Apr 2012)

Hi,

nach so kurzer Zeit nun doch schon wieder ich und ich habe vllt. einen Lösungsansatz gefunden.

Ich habe beim weiteren googlen, man will ja nicht untätig rumsitzen, ein Tutorial gefunden.

Dieses hier: Open Tutorial: How to Use JDBC, ODBC with MS Access

Den Schritt 1 habe ich nie ausgeführt, das müsste ich dann entsprechend Versuchen, falls jemand das ganze Nachvollziehen möchte finde ich hier gut erklärt wie es geht:

SQL-Grundlagen

Die Frage ist nun, kann das mein Problem lösen oder bin ich auf dem völlig falschen Dampfer.

Dummerweise kann ich das nicht gleich versuchen, da ich im Praktikum bin und hier auf den PCs keine Adminrechte habe, der Antrag kann etwas dauern.

Sollte ich auf dem richtigen Weg sein bitte ich um Antwort, sollte ich auf dem Holzpfad sein, bitte ich auch um Antwort.

mkg benni


----------



## maestr0 (24. Apr 2012)

Hey sabbergesicht,

ich denke nicht,dass du um die Einrichtung von ODBC und DSN herum kommst.
In dem Link, den du gepostet hast ist von DNS die Rede.das ist schon mal falsch, da DNS ein Dienst ist,der Hostnamen in IP-Adressen umwandelt.

Richtig ist DSN!!und hier steht auch,dass eine Einrichtung nötig ist SQL mit Java

Wie du das dann machst,steht hier SQL-Grundlagen

Hoffe ich konnte dir damit helfen.

Edit:sry den zweiten Link hast du ja schon gefundenhab ich übersehen


----------



## Guybrush Threepwood (24. Apr 2012)

Ich habe noch nie von Java auf Access-DBs zugegriffen, aber ich nehme schwer an, Du brauchst eine passende Bibliothek, die Du dem Classpath hinzufügen musst. Schließlich wird kein JdbcOdbcDriver gefunden (Stacktrace). Google doch mal ODBC-JDBC-Bridge
Im Forum gibt es auch Einträge dazu.


----------



## sabbergesicht (24. Apr 2012)

hoi,

so erstmal danke für eure Lösungsansätze.

Zu den Sachen von dir maestr0, dass ich nich drum herum komme das einzurichten konnte ich mir schon denken, genau so etwas hatte ich befürchtet.
Deine beiden Links helfen mir leider nicht viel weiter, die dort angegebenen Lösungen hatte ich bereits versucht umzusetzen bin damit aber jedesmal von einer Fehlermeldung in die nächste gerannt ... äußerst demotivierend.

Auch dir vielen Dank Guybrush Threepwood, soweit ich Lösungen oder Lösungsansätze dazu fand, müsste wohl alles korrekt sein, da mir der Treiber für jdbcdbc als installiert ausgegeben wird. Was hier fehlt, ist wohl wirklich die Einbindung bei Systemsteuerung -> Datenquellen -> System-DSN

So, nun zum eigentlichen Inhalt des Posts:

Ich hatte eben eine Art Erleuchtung gehabt, wenn ich die Server Addresse, die ich ja habe mit tnsping anpinge, bekomme ich ja den offenen Port und alle wichtigen Informationen -> ich kann den oracleDriver verwenden, so wie ich es im Studium gelernt habe. Muss ich das Ding also nur noch finden (ich möchte mich ungern bei Oracle registrieren) und einbinden.
Dann kann ich, wie zuerst gewünscht, auf ODBC verzichten, da dies ja suboptimal sein soll (habe ich so mehrfach gelesen, keine garantie für Richtigkeit dieser Behauptung).

Eine andere Frage ist, ob die genutzte Anbindung überhaupt eine Rolle spielt, es ja die Möglichkeiten Oracle, MySQL, ODBC und und und zu verwenden, macht das einen Unterschied, bzw gibt es Einschränkungen? Ich vermute und hoffe die Antwort lautet nein.

Wenn ich weiter komme melde ich mich nochmal (wenn nicht melde ich mich auch nochmal), vllt hilft das ja dem ein oder anderen der bei google nach einer Lösung für das gleiche Problem sucht.


----------



## Spacerat (24. Apr 2012)

SQL-Datenbankanbindungen sind in der Regel relativ identisch, was die Querys und Results angeht. Willst du also ein komplett neues Projekt aufsetzen bist du nicht wirklich an eine spezielle DB gebunden.
Erst wenn du vorhandene DBs mit Java bearbeiten bzw. benutzen willst, benötigst du die notwendigen Treiber. Für MS-Access gibt es nunmal (afaik) keinen JDBC-Treiber wie z.B. für MySQL. Hier ist man auf die JDBC-ODBC-Bridge und einen kompatiblen ODBC-Treiber für MS-Access angewiesen. Wenn du die JDBC-Bridge erst einmal installiert hast, kannst du sie gleich mal testen und zwar mit einem möglicherweise bereits vorhandenem MySQL-ODBC-Treiber. Dieser funktioniert genauso wie der MySQL-JDBC-Treiber. Wenn du so Zugriff auf eine MySQL-Datenbank bekommst, weisst du, dass die Brücke funktioniert und musst dir nur noch einen passenden ODBC-Treiber für Access besorgen.


----------



## sabbergesicht (25. Apr 2012)

ES LEBT

so, nochmal vielen herzlichen Dank für die Antworten und die Hilfe.

Also mit meinem kleinen Ausflug in Richtung Access scheine ich mehr Verwirrung gestiftet zu haben als alles andere, Access wäre eine notlösung gewesen, da wir die SQL DB zwar in Access Exportieren konnten, ich aber nicht mit Java drauf zugreifen konnte.

Erklärung des Problems und der Lösung:


```
Class.forName("oracle.jdbc.OracleDriver");
			
			Connection cn = DriverManager.getConnection("jdbc:oracle:thin:@host:port:name; dbUsr, dbPwd);
```


für die Erstellung der Verbindung war ja der Pfad, der freie Port und der Name der Datenbank nötig, alles was ich hatte war ein Pfad in unserem Intranet (den hatte ich aus einem Funktionsfähigen Makro).

Gelöst habe ich das ganze, indem ich den Pfad aus dem Makro via tnsping in der cmd anpingte, dabei wurden einem dann der Port, der Name und der genaue Host (der im übrigen anders lautete als die angepingte Addresse) genannt, also das was ich für die Erstellung der Verbindung benötige.

Was den fehlenden Oracle Treiber angeht, konnte mir ein Kollege helfen der diesen bereits auf seinem PC hatte, einfach irgendwo aufm PC gespeichert und dann mit Eclipse eingebunden.

Hoffe das hilft vllt. dem ein oder anderm Suchenden weiter, wenn mal wer das gleiche Problem hat.

Sollte ich nochmal Probleme mit Java haben und die wird es bestimmt geben, werde ich wieder hier im Forum vorbeischauen.

Also bis die Tage und mkg

Benni

PS.: Da das thema von meiner Seite her abgeschlossen ist, kann der Thread nun gern geschlossen werden.


----------



## VfL_Freak (25. Apr 2012)

Moin Benni,



sabbergesicht hat gesagt.:


> PS.: Da das thema von meiner Seite her abgeschlossen ist, kann der Thread nun gern geschlossen werden.


Trau Dich ruhig und mach' es selbst 

Einmal unten auf die Schaltfläche <Thema als "erledigt" markieren> klicken 

Gruß
Klaus


----------

