Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

JDBC installation / Erste Schritte

0 views
Skip to first unread message

Daniel Wieneck

unread,
Jan 25, 2004, 6:00:19 PM1/25/04
to
Hio all !
Ich habe vor mir mal ein paar kleine Progrämmchen für
meine lokale MySQL DB zu schreiben.
Zu erst habe ich mir den mysql-connector von mysql.com runtergeladen
und in mein j2sdk1.4.2_03/jre/lib/ext verzeichnis gepackt.

Um erstmal in die Materie zu gelangen habe ich mir folgende TestKlasse runtergeladen:

http://www.javacoding.net/automate/downloadsnippet.php?id=105&PHPSESSID=ce90fec4938323a17c62e5924da48372
(Hier noch die URL von dem tut: http://www.javacoding.net/articles/technical/java-mysql.html )

Mittels JBuilder 9 Personal hab ich dann ein neue Projekt gemacht und diese Test klasse
hinzugefügt.

Nun habe ich die main-Methode folgendermaßen verändert:

public static void main ( String args[] ) throws Exception {
new TestMySQL ( ).test ( "localhost", "test" );

}

Wenn ich das Programm nun starte bekomme ich folgende Ausgabe:

MySQL Driver Found
Exception in thread "main" java.sql.SQLException: Unable to connect to any hosts due to exception: java.net.ConnectException: Connection refused
at com.mysql.jdbc.Connection.createNewIO(Connection.java:1690)
at com.mysql.jdbc.Connection.<init>(Connection.java:427)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:395)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:193)
at javamyadmin.TestMySQL.getConnection(TestMySQL.java:68)
at javamyadmin.TestMySQL.test(TestMySQL.java:22)
at javamyadmin.TestMySQL.main(TestMySQL.java:133)
Connection couldn't be established to jdbc:mysql://localhost/test

Ich habe natürlich mittels phpMyAdmin sichergestellt das Jeder von jedem Host vollen zugriff auf
die DB Test hat.

So eine weitere Frage habe ich noch:
Ich sehe anhand dieser Test-klasse, das dei URL in der Form jdbc:mysql://host/db
verwendet wird.
Wie kann ich denn der JDBC sagen welches PW benutzt werden soll ?
(evtl. durch jdbc:mysql://user:pw@host/db ?)

Danke für eure Hilfe

Daniel Wieneck

Nico Seessle

unread,
Jan 25, 2004, 6:41:08 PM1/25/04
to
Daniel Wieneck wrote:

> MySQL Driver Found
> Exception in thread "main" java.sql.SQLException: Unable to connect to any hosts due to exception: java.net.ConnectException: Connection refused

> Ich habe natürlich mittels phpMyAdmin sichergestellt das Jeder von jedem Host vollen zugriff auf
> die DB Test hat.

Was sagt denn "grep skip-networking /etc/mysql/my.cnf"? (Natürlich den
Pfad zur MySQL-Konfigurationsdatei entsprechend deiner Distribution
anpassen). Die entsprechende Option muss auskommentiert sein (mit #).

Alternativ (falls du die nicht findest): "netstat -a -n | grep 3306" -
dort sollte dann eine Zeile in der Form "tcp ... ...:3306 ...LISTEN"
erscheinen. Sonst horcht dein MySQL einfach nicht auf Netzwerk-Verbindungen.

> Wie kann ich denn der JDBC sagen welches PW benutzt werden soll ?
> (evtl. durch jdbc:mysql://user:pw@host/db ?)

Ja, irgendwie kann man das bei MySQL über die URL übergeben.

Allgemeiner funktioniert dann evtl.
<http://java.sun.com/j2se/1.4.2/docs/api/java/sql/DriverManager.html#getConnection(java.lang.String,%20java.lang.String,%20java.lang.String)>

Nico

Daniel Wieneck

unread,
Jan 25, 2004, 6:59:04 PM1/25/04
to
On Mon, 26 Jan 2004 00:41:08 +0100
Nico Seessle <nsee...@expires-2004-01-31.arcornews.de> wrote:

> Was sagt denn "grep skip-networking /etc/mysql/my.cnf"? (Natürlich den
> Pfad zur MySQL-Konfigurationsdatei entsprechend deiner Distribution
> anpassen). Die entsprechende Option muss auskommentiert sein (mit #).

schein auskommentiert zu sein:
unixxer:/etc/mysql# grep skip-networking /etc/mysql/my.cnf
skip-networking



> Alternativ (falls du die nicht findest): "netstat -a -n | grep 3306" -
> dort sollte dann eine Zeile in der Form "tcp ... ...:3306 ...LISTEN"
> erscheinen. Sonst horcht dein MySQL einfach nicht auf Netzwerk-Verbindungen.

netstat -a -n | grep 3306 sagt nix :))
aber über php komm ich ja auf meine DB ... naja is wohl was anderes ;)

Gruss Daniel

Nico Seessle

unread,
Jan 26, 2004, 2:30:01 AM1/26/04
to
Daniel Wieneck wrote:

>>Was sagt denn "grep skip-networking /etc/mysql/my.cnf"? (Natürlich den
>>Pfad zur MySQL-Konfigurationsdatei entsprechend deiner Distribution
>>anpassen). Die entsprechende Option muss auskommentiert sein (mit #).
>
> schein auskommentiert zu sein:
> unixxer:/etc/mysql# grep skip-networking /etc/mysql/my.cnf
> skip-networking
>

Ähm... wie kommst du auf "scheint auskommentiert zu sein"?

Das "unixxer:/etc/mysql#" ist dein Prompt, und in der nächsten Zeile ist
nix von einem Kommentarzeichen zu sehen.

Wenn du in der Zeile "skip-networking" in /etc/mysql/my.cnf am Anfang
ein "#" setzt sollte der Server hinterher im Netzwerk erreichbar sein
(und dann auch dein Connect funktionieren).

Beachte dabei, das der Server hinterher im Netzwerk erreichbar ist - ja,
ich weiss das hört sich "doof" an in diesem Kontext - und dann - wenn
keine weiteren Maßnahmen getroffen werden - potentiell *jeder* auf dein
Datenbank zugreifen kann (oder es versuchen), wenn der Rechner im
Internet hängt.

Nioo

Daniel Wieneck

unread,
Jan 26, 2004, 6:33:41 AM1/26/04
to
On Mon, 26 Jan 2004 08:30:01 +0100

Nico Seessle <nsee...@expires-2004-01-31.arcornews.de> wrote:


> Ähm... wie kommst du auf "scheint auskommentiert zu sein"?
>
> Das "unixxer:/etc/mysql#" ist dein Prompt, und in der nächsten Zeile ist
> nix von einem Kommentarzeichen zu sehen.
>
> Wenn du in der Zeile "skip-networking" in /etc/mysql/my.cnf am Anfang
> ein "#" setzt sollte der Server hinterher im Netzwerk erreichbar sein
> (und dann auch dein Connect funktionieren).

sorry war wohl ein bissl zu spät als ich das getestet hab ;)
funzt nun einwandfrei thx.



> Beachte dabei, das der Server hinterher im Netzwerk erreichbar ist - ja,
> ich weiss das hört sich "doof" an in diesem Kontext - und dann - wenn
> keine weiteren Maßnahmen getroffen werden - potentiell *jeder* auf dein
> Datenbank zugreifen kann (oder es versuchen), wenn der Rechner im
> Internet hängt.

natü+rlich habe ich nur zu diesem test einen benutzer eingerichtet, dessen
name egal ist bzw. nicht vorhanden und der kein passwort hat.
dieser benutzer kann nur auf 'test' zugreifen.
für alle anderen db's brauch man ein passwort und auch einen benutzernamen.

danke für deine hilfe.

Daniel

Wolfgang Stagl

unread,
Jan 26, 2004, 9:42:01 AM1/26/04
to
Servus !

würde dir empfehlen dein Proggie auf der Kommandozeile zu kompilieren
und auch dort auszuführen.

Ich würde (als NICHT JBuilder User nur) vermuten dass der JBUilder den
Standard Classpath des JRE ignoriert.

Ausserdem würde ich um andere Fehler auszuschliessen das Library (den
mysql Treiber) direkt im Klassenpfad des Compiles und oder des JVM
Starts anzugeben.

Wenn es dann funktioniert suchst du im JBUilder nach den ClassPath
Einstellungen für dein aktuelles Projekt und fügst dort das Library ein.
(Kannst du natürlich auch vorher machen, aber man sollte IMMER in der
Lage sein seine Software mit den von Sun mitgeliferten Hilfsmitteln zum
Laufen zu bringen)

lg wolfgang

Wolfgang Stagl

unread,
Jan 26, 2004, 9:55:59 AM1/26/04
to
Wolfgang Stagl wrote:

Sorry falscher Film ... ich hatte zuerst geglaubt er findet den Treiber
nicht, aber du kannst ja bloß nicht verbinden ... Verzeiht und vergesst
mein voriges Posting.

ABER

>> Ich sehe anhand dieser Test-klasse, das dei URL in der Form >
>> jdbc:mysql://host/db
>> verwendet wird.
>> Wie kann ich denn der JDBC sagen welches PW benutzt werden soll ?
>> (evtl. durch jdbc:mysql://user:pw@host/db ?)

Dann würdest du auf den Rechner USER am Port pw@host verbinden ... ;-)

(jdbc:mysql://user:port/dbname)

In der URL kannst du das gar nicht angeben !!

aber mit:

String usr = "hase";
String pwd = "karotte";
url = "jdbc:mysql://" + host + "/" + database;
Connection con = DriverManager.getConnection(url, usr, pwd);

in der getConnection- Methode deiner Testklasse !

empfehle:

http://java.sun.com/j2se/1.4.2/docs/api/java/sql/DriverManager.html

lg
wolfgang

0 new messages