Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 16

Thema: JDBC - Problem

  1. #1
    Registrierter Benutzer
    Registriert seit
    25.10.2005
    Ort
    Hamminkeln
    Beiträge
    302

    Unhappy JDBC - Problem

    Hallo zusammen,
    wer kann mir einen Tipp zufolgendem Prob geben?
    Ich möchte mit meiner Java-Anwendung auf meinen MySQl-Server zugreiffen. Aber ich bekomme stets Fehlermeldungen geliefert, einige Versuche habe ich schon durchgeführt, komme aber nicht weiter. Hier kommt mein Script:
    import java.sql.*;
    public class CallDB
    {
    public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException
    {
    //DriverManager.setLogStream(System.out);
    try {
    String url = "jdbc:mysql:MeinServer:3306";
    Class.forName("org.gjt.mm.mysql.Driver");
    Connection con = DriverManager.getConnection( url, "benutzer", "passwort" );
    System.out.println("es läuft!"); // ebend nicht! ;-)

    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    Wo liegt der Fehler....????
    Der MySQL-Server läuft auf einem Linux-System und ist auch aus dem Web so wie lokal per Telnet erreichbar. Meine Entwicklungsumgebung ist Eclipse 3.0 unter Windows XP.
    Vereinfacht die Dinge, und ihr erleichtert euch das Leben. (Henry David Thoreau)

  2. #2
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Versuchs mal mit:
    Code:
    Class.forName("org.gjt.mm.mysql.Driver").newInstance();
    Läuft nun der Treiber und kommt die Fehlermeldung erst beim Verbindungaufbau?
    Wie heißt die Fehlermeldung?
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  3. #3
    Registrierter Benutzer
    Registriert seit
    25.10.2005
    Ort
    Hamminkeln
    Beiträge
    302
    Hallo Caveman,
    danke für deine Antwort.
    Habe deinen Eintrag eingefügt, abe rder Fehler kommt immer noch:
    java.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at CallDB.main(CallDB.java:27)
    Vereinfacht die Dinge, und ihr erleichtert euch das Leben. (Henry David Thoreau)

  4. #4
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Ich habe es befürchtet.
    Gleiches Problem habe ich zur Zeit auch?
    (SuSE Linux 10.0 und Eclipse 3.1.1)
    Ich nehme mal an, Du hast den Treiber auch ins Projekt eingefügt.

    Ich werde mich morgen oder übermorgen nochmal ausführlich mit diesem Problem auseinander setzen.

    Edit: Vielleicht weiß in der Zwischenzeit jemand eine Lösung
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  5. #5
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Bin ein Stück weiter gekommen:

    Mein Fehler war, dass ich den Treiber falsch eingebunden habe.


    So bindet man den Treiber richtig bei Eclipse ins Projekt ein:
    1. rechtsklick auf den Projektnamen (!Achtung! Nicht den Packagenamen)
    2. Im Menü, das aufgeht, Properties auswählen.
    3. Ein neues Fenster erscheint
    4. dort Java Build Path auswählen
    5. jetzt rechts mit Add External JARs... die Archiv-Datei mit dem Treiber angeben
    Das Archiv des Treibers heißt unter Linux mysql-connector-java.jar und ist im Verzeichnis /usr/share/java/ zu finden.

    Hoffe das konnte Dir weiterhelfen.
    Geändert von Caveman (20-12-2005 um 17:19 Uhr)
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  6. #6
    Registrierter Benutzer
    Registriert seit
    25.10.2005
    Ort
    Hamminkeln
    Beiträge
    302
    @Caveman,

    ich werde deinen Vorschlag heute abend direkt umsetzen, bin jetzt im Büro und habe hier keinen MySQL-Server z.V.. Aber wenn es so weiter geht, mal schauen
    Ich schreibe dir auf jeden Fall ob es dann funzt. Es könnte an dem vermuteten Problem liegen, bin noch kein erfahrener Java-Progger. Und solche Probs sind dann gern genommene Hindernisse .
    Danke!
    Vereinfacht die Dinge, und ihr erleichtert euch das Leben. (Henry David Thoreau)

  7. #7
    Registrierter Benutzer
    Registriert seit
    25.10.2005
    Ort
    Hamminkeln
    Beiträge
    302
    Hi Caveman,

    nöö, das war es (wohl) nicht. Ich habe unter Eclipse nicht die Schritte ausführen können, die du beschrieben hast.
    Irgendwie haut das nicht hin (andere menüpunkte, oder ich setze nicht richtig um was du meinst).
    Vereinfacht die Dinge, und ihr erleichtert euch das Leben. (Henry David Thoreau)

  8. #8
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Ich mache es ehrlich gesagt (nach einem Tipp von (Peschmae?)) so, dass ich das .jar packe und dann die benötigten Bibliotheken beilege. Ich habe mir einen Ordner angelegt, in den alle benötigten externen jars entpackt werden. Der Rest geht mit dem Konqueror jedenfalls superleicht:
    ein Fenster für mein Jar, draufklicken, Inhalt wird angezeigt.
    Zweites Fenster für meinen Bibliothekenordner, alles markieren, in das andere Fenster ziehen und fertig. Das geht bestimmt auch sauberer, aber so klappt es hier wunderbar.
    Das Ziel ist das Ziel.

  9. #9
    Registrierter Benutzer
    Registriert seit
    25.10.2005
    Ort
    Hamminkeln
    Beiträge
    302
    @mwanaheri,
    also doch ein Jar erzeugen??? Aber ich möchte doch den Zugriff auf den MySQL-Server auch während der Programmierphase, daher werd eich wohl noch einwenig über Weihnachten basteln.
    Ich programmiere mit Java unter winXP, der MySQL läuft auf Red Hat 9.0. :-))
    Vereinfacht die Dinge, und ihr erleichtert euch das Leben. (Henry David Thoreau)

  10. #10
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Ich kann leider nur für Eclipse unter Linux (habe ich auf dem eigenen Rechner) oder JBuilder unter Windows (ist an der FH) sprechen:
    Du musst in jedem Fall eine jar-Datei einbinden. Diese gibt es z.B. unter http://dev.mysql.com/downloads/connector/j/3.1.html (ohne Gewehr; hab ich aus meiner Anleitung)
    Unter JBuilder würde es dann so gehen, dass man Tools->Konfigurieren->JDKs auswählt und im Dialogfeld bei den Klassen die Datei mysql-connector-java-3.1.11-bin.jar hinzufügt.

    Mach' mal direkt nach Class.forName("org.gjt.mm.mysql.Driver").newInstan ce(); eine Ausgabe: z.B. System.out.println("Treiber geladen");!
    Sollte die nicht kommen stimmt was mit dem Treiber nicht.

    Suche dann mal im Projektverzeichnis nach der Datei "Driver.class". Diese muss dann unter projektverzeichnis\org\gjt\mm\mysql stehen, während das eigentliche Programm unter projektverzeichnis\packagename steht (falls ein Package angelegt wurde)

    Übrigens bei mir heißt das ganze "com.mysql.jdbc.Driver" und liegt dann folglich unter projektverzeichnis/com/mysql/jdbc.

    Bei mir funktioniert's mittlerweilen, also wirst Du es auch noch bis Weihnachten schaffen
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  11. #11
    Registrierter Benutzer
    Registriert seit
    25.10.2005
    Ort
    Hamminkeln
    Beiträge
    302
    @Caveman, moin moin,
    ich habe mir ein Buch zu Eclipse geholt. Da war auch die Installation des Treibers, der auch mit geliefert wurde, aufgeführt. Für mich allerdings nicht tief genug.
    Aber eine generelle Frage: Muss ich im OS noch etwas einrichten? Benutzer DSN oder System DSN? Oder.....? Im Buch stand davon nichts, habe jedenfalls nichts gefunden, aber in einer alten Unterlage (ca. 2 Jahre alt und allerdings für einen ODBC-Treiber) stand das ein DSN eingerichtet werden muss.
    Vereinfacht die Dinge, und ihr erleichtert euch das Leben. (Henry David Thoreau)

  12. #12
    Registrierter Benutzer
    Registriert seit
    10.02.2005
    Ort
    Hückelhoven
    Beiträge
    26
    Hi!

    Zitat Zitat von Jor
    Aber eine generelle Frage: Muss ich im OS noch etwas einrichten? Benutzer DSN oder System DSN? Oder.....? Im Buch stand davon nichts, habe jedenfalls nichts gefunden, aber in einer alten Unterlage (ca. 2 Jahre alt und allerdings für einen ODBC-Treiber) stand das ein DSN eingerichtet werden muss.
    Nein. Zum Einen betrifft das nur ODBC-Verbindungen, zum Anderen wäre das ja nicht plattformunabhängig, also für Java eigentlich unbrauchbar.

    Du brauchst wirklich nur das Java Archiv (JAR) des Connectors in den CLASSPATH einzubinden.

    Was mir grad auffällt: Der JDBC-ConnectionString müsste eigentlich so aussehen: jdbc:mysql://MeinServer:3306/MeineDb

    Gruß
    fuffy

  13. #13
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Wo genau tritt der Fehler auf?

    Welche der folgenden Zeilen wird tatsächlich richtig ausgeführt:
    Code:
    Class.forName("org.gjt.mm.mysql.Driver").newInstance();
    Connection con = DriverManager.getConnection( url, "benutzer", "passwort" );
    Keine von beiden oder die erste?


    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  14. #14
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Oh, jetzt gehen die Sachen etwas durcheinander. Sorry, ich dachte, die Bibliothek wird beim Ausführen der .jar nicht gefunden.
    Also weiter vorn:
    In Eclipse bindest du die Bibliothek ein, indem du auf das Projekt rechtsklickst, dann "Properties". Dort "Java Build Path", "Libraries", "Add External Jars", dann die entsprechende Datei auswählen, "ok".

    Wo es dann hakt kannst du über die Exceptions erfahren:
    Code:
    Connection con; // du musst ja auch außerhalb des Aufrufes darauf zugreifen können.
    try{
       System.out.println("verbinde mit der Datenbank"); // damit du weißt, dass die Methode angesprungen wird
       Class.forName("org.gjt.mm.mysql.Driver").newInstance();
       con = DriverManager.getConnection( url, "benutzer", "passwort" );
    } catch (ClassNotFoundException cnfe) {
       System.out.println("Klasse für die Datenbank nicht gefunden\n" + cnfe.getMessage());
       System.out.println("Cause:" + cnfe.getLocalizedMessage());
    } catch (SQLException sqlverbindung) {
       System.out.println("Verbindung fehlgeschlagen:");
        System.out.println(sqlverbindung.getMessage());
        }
     }
    Welche Exception tritt auf?

    Ich finde es übrigens riskant, eine Datenbank über das Web erreichbar zu machen. Da gehört ein Brokerprogramm dazwischen.
    Das Ziel ist das Ziel.

  15. #15
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    @mwanaheri
    Ich hab mal Deine Methode angwandt (über Properties->Java Build Path usw.)
    Hört sich irgendwie besser an und funktioniert bei mir auch.
    Jetzt sind die Treiber-Klassen nicht mehr im Projektverzeichnis, sondern der Treiber ist als Archiv im Projekt.

    Hab auch meinen Beitrag vom 18-12-2005, 21:06 dahingehend geändert!
    Geändert von Caveman (20-12-2005 um 17:22 Uhr)
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •