Hallo alle zusammen,
Ich bin noch nicht so fit in Java und habe gerade zum ersten Mal erfolgreich auf eine MySQL Datenbank zugegriffen und habe noch (weiter unten) ein paar Fragen dazu:
Ich entwickle unter Windows 2000 mit Eclipse 3.2.1
Das JRE jre1.5.0_06 ist unter C:\Programme\Java\jre1.5.0_06 installiert
Zum testen benütze ich mein internes Netz: 192.168.100.x
Das MySQL 5.0_22 (Debian) läuft unter Linux
Das von mir geschriebene Programm wird aus Eclipse heraus gestartet
Zuerst dachte ich, das ich den Datenbanktreiber unter ->Start->Einstellungen->Systemsteuerung->Verwaltung->Datenquellen etwas einrichten müßte. Früher (mit Access) war das so, aber dort war nichts zu holen.
Nach dem lesen der FAQ hier im Forum habe ich mir von http://dev.mysql.com/downloads/connector/ den Connector/J 5.0 heruntergeladen: mysql-connector-java-5.0.4-bin.jar Die 5er-Versionen sollen zwar hin- und wieder Probleme bereiten aber eine 3er-Version wollte ich irgendwie nicht.
Mir war zuerst nicht ganz klar wohin er installiert werden sollte: Auf die Maschine mit dem Eclipse oder auf die Maschine mit dem MySQL Server? Irgendwann war den klar das der J/Connector auf der Maschine, auf der ich mit Eclpse entwickle, installiert werden muß.
Als ich über ->Arbeitsplatz->Eigenschaften->Erweitert->Umgebungsvariablen versucht habe den Pfad (unter dem ich den J/Connector mysql-connector-java-5.0.4-bin.jar abgelegt hatte) zur 'PATH' Variable hinzuzufügen bin ich gescheitert. Der neue Pfad steht zwar drin, zeigt aber keine Wirkung. Ehrlicherweise muß ich sagen das ich Windows auch nicht neu gestartet hatte. Die Fehlermeldungen lauteten folgendermassen:
Letzt endlich habe ich den J/Connector mysql-connector-java-5.0.4-bin.jar im Ordner meiner JRE Installation abgelegt und zwar unter C:\Programme\Java\jre1.5.0_06\lib\ext\mysql-connector-java-5.0.4-bin.jar Das führte zum Erfolg. Unter Linux soll das mit dem \lib\ext\ Verzeichnis ebenfalls funktionieren).
Mein Code sieht dann folgermassen aus:
und ...
Jetzt meine Fragen:
1) In den meisten Beispielen steht, das man import java.sql.* und import java.net.* benützen soll. Auf import java.net.* kann man aber anscheinend komplett verzichten. Warum eigentlich? Es handelt sich doch um eine Netzwerkverbindung.
2) Warum funktioniert ausgerechnet "Class.forName("org.gjt.mm.mysql.Driver");"? Die anderen Aufrufe habe ich in verschiedensten Beispielen gefunden,aber sie funktionieren nicht.
3) Ich habe es noch nie gemacht, aber wenn ich ein *.jar File mit meinem Code erzeuge und es einem Bekannten in die Hand drücke (und vorher das 192.168.100.3 in www.meinrechner.de ändere und den port 3306 freigegebe) : Muß der auch den J/Connector bei sich installieren? Oder schubbert das Eclipse den ganzen wichtigen JDBC Kram mit in das *.jar? Wird das *.jar dann nicht wahnwitzig groß?
Um zum Schluß: Vielen Dank an alle, die Beiträge hier im Forum oder anderswo schreiben: Ohne dieses Forum und ohne Google könnte ich immer noch nicht auf die Datenbank per Java zugreifen!
Ich bin noch nicht so fit in Java und habe gerade zum ersten Mal erfolgreich auf eine MySQL Datenbank zugegriffen und habe noch (weiter unten) ein paar Fragen dazu:
Ich entwickle unter Windows 2000 mit Eclipse 3.2.1
Das JRE jre1.5.0_06 ist unter C:\Programme\Java\jre1.5.0_06 installiert
Zum testen benütze ich mein internes Netz: 192.168.100.x
Das MySQL 5.0_22 (Debian) läuft unter Linux
Das von mir geschriebene Programm wird aus Eclipse heraus gestartet
Zuerst dachte ich, das ich den Datenbanktreiber unter ->Start->Einstellungen->Systemsteuerung->Verwaltung->Datenquellen etwas einrichten müßte. Früher (mit Access) war das so, aber dort war nichts zu holen.
Nach dem lesen der FAQ hier im Forum habe ich mir von http://dev.mysql.com/downloads/connector/ den Connector/J 5.0 heruntergeladen: mysql-connector-java-5.0.4-bin.jar Die 5er-Versionen sollen zwar hin- und wieder Probleme bereiten aber eine 3er-Version wollte ich irgendwie nicht.
Mir war zuerst nicht ganz klar wohin er installiert werden sollte: Auf die Maschine mit dem Eclipse oder auf die Maschine mit dem MySQL Server? Irgendwann war den klar das der J/Connector auf der Maschine, auf der ich mit Eclpse entwickle, installiert werden muß.
Als ich über ->Arbeitsplatz->Eigenschaften->Erweitert->Umgebungsvariablen versucht habe den Pfad (unter dem ich den J/Connector mysql-connector-java-5.0.4-bin.jar abgelegt hatte) zur 'PATH' Variable hinzuzufügen bin ich gescheitert. Der neue Pfad steht zwar drin, zeigt aber keine Wirkung. Ehrlicherweise muß ich sagen das ich Windows auch nicht neu gestartet hatte. Die Fehlermeldungen lauteten folgendermassen:
Code:
java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at SQL_Test.main(SQL_Test.java:25)
Treiber kann nicht geladen werden: org.gjt.mm.mysql.Driver
Letzt endlich habe ich den J/Connector mysql-connector-java-5.0.4-bin.jar im Ordner meiner JRE Installation abgelegt und zwar unter C:\Programme\Java\jre1.5.0_06\lib\ext\mysql-connector-java-5.0.4-bin.jar Das führte zum Erfolg. Unter Linux soll das mit dem \lib\ext\ Verzeichnis ebenfalls funktionieren).
Mein Code sieht dann folgermassen aus:
Code:
try{
//Class.forName("com.mysql.jdbc.Driver");
Class.forName("org.gjt.mm.mysql.Driver");
//Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//Class.forName("mysql-connector-java-5.0.4-bin.jar");
}
catch(ClassNotFoundException cnfe){
cnfe.printStackTrace();
System.out.println("Treiber kann nicht geladen werden: "+cnfe.getMessage());
}
und ...
Code:
Connection conn;
conn = DriverManager.getConnection("jdbc:mysql://192.168.100.3/test_db?user=derpapast&password=geheim");
Jetzt meine Fragen:
1) In den meisten Beispielen steht, das man import java.sql.* und import java.net.* benützen soll. Auf import java.net.* kann man aber anscheinend komplett verzichten. Warum eigentlich? Es handelt sich doch um eine Netzwerkverbindung.
2) Warum funktioniert ausgerechnet "Class.forName("org.gjt.mm.mysql.Driver");"? Die anderen Aufrufe habe ich in verschiedensten Beispielen gefunden,aber sie funktionieren nicht.
3) Ich habe es noch nie gemacht, aber wenn ich ein *.jar File mit meinem Code erzeuge und es einem Bekannten in die Hand drücke (und vorher das 192.168.100.3 in www.meinrechner.de ändere und den port 3306 freigegebe) : Muß der auch den J/Connector bei sich installieren? Oder schubbert das Eclipse den ganzen wichtigen JDBC Kram mit in das *.jar? Wird das *.jar dann nicht wahnwitzig groß?
Um zum Schluß: Vielen Dank an alle, die Beiträge hier im Forum oder anderswo schreiben: Ohne dieses Forum und ohne Google könnte ich immer noch nicht auf die Datenbank per Java zugreifen!