JDBC mit MySQL

Status
Nicht offen für weitere Antworten.

Hannes23

Bekanntes Mitglied
Hallo,

ich versuche mit folgendem Code auf eine MySQL-Datenbank zuzugreifen:

Code:
import java.sql.*;

public class JdbcMysqlDemo01 {
    public static void main( String[] args ) {
       
        String host = "localhost";
        String port = "3306";
        String dbType = "mysql";
        String dbName = "test";
        String dbUser = "hannes";
        String dbPwd = "xxx";

        // Mit der folgenden Anweisung
        // geben wir die JDBC-Treiber f�r Oracle und
        // Mysql an, die je nach Vorhandensein
        // geladen werden.
        // (Dies kann man nat�rlich auch �ber
        // die Kommandozeile mit dem "-D"-Schalter
        // und dem Property "jdbc.drivers" tun).
        String myDrivers =
            "com.mysql.jdbc.Driver";

        System.setProperty(
            "jdbc.drivers",
            myDrivers
        );

        
  
        // Mysql
        try {
            Class.forName(
                "com.mysql.jdbc.Driver"
            );
        } catch ( Exception ex ) {
	    System.out.println("TREIBER NICHT GEFUNDEN!!!");
            System.err.print( ex );
            System.exit( 1 );
        }


        //Verbindung zur DB aufbauen
        Connection conn = null;

        String uri = "jdbc:" + dbType + "://" +
            host + ":" + port + "/" +
            dbName;
        try {
            conn = DriverManager.getConnection(
                uri,
                dbUser,
                dbPwd
            );
            System.out.println( "OK" );
        } catch ( Exception ex ) {
            System.err.print( ex );
            System.exit( 1 );
        } finally {
            if ( conn != null ) {
                try {
                    conn.close();
                } catch ( Exception ign ) {}
            }
        }

        System.exit( 0 );
    }
}


Der Programmaufruf:
java -cp .:mysql-connector-java-3.0.14-production-bin.jar JdbcMysqlDemo01

Ich bekomme folgende Fehlermeldung:
Exception in thread "main" java.lang.NoClassDefFoundError: JdbcMysqlDemo01


...und hätte noch eine allgemeine Frage zum mysql-connector:
-Muss ich den bei jedem Programmaufruf angeben?
-Gibt es irgendein Verzeichnis, an das er standartmäßig kopiert wird?


Danke,

Hannes

-----------------------------------------------------------
Umgebung:
Linux SuSE 9.2
MySQL 4.0.21
 
nim mal den java -cp mysql-connector-java-3.0.14-production-bin.jar;. JdbcMysqlDemo01
ja mußt ihn jedes mal angeben seiden du entpackst ihn und machst alles als jar und packst ihn mit darein

was meinst du mit dem kopieren
 
Linux

-cp .:/pfad/zur/jar/mysql-connector-java-3.0.14-production-bin.jar Klasse

Windows

-cp .;C:\schmu\schmaeh\mysql-connector-java-3.0.14-production-bin.jar Klasse

du musst java natürlich in dem Ordner aufrufen, in dem die DateiJdbcMysqlDemo01.class liegt



und: gib den cp bei jedem Aufruf an, schreib dir ggf. eine batch/shell datei oder ein ant-skript
 
Mhmm...danke. Und weiß noch jemand woran die Fehlermeldung liegen könnte??


@EagleEye:
Mit kopieren meinte ich, ob es ein bestimmtes Verzeichnis gibt, in dem die *.jar Datei rein muss und von dort aus standartmäßig aufgerufen wird....aber hat sich dann eh erledigt.

Danke, Hannes
 
Exception in thread "main" java.lang.NoClassDefFoundError: JdbcMysqlDemo01


heisst:

JdbcMysqlDemo01.class

liegt in keinem Ordner der im Classpath aufgeführt ist
 
...und wie kann ich unter Linux angeben, welcher Ordner im Classpath aufgeführt ist?

Hab hald jetzt einfach einen Ordner java, in dem meine Programme drinliegen...denn sollte ich dann ja wohl im Classpath angeben?
 
Wenn du IM ordner java den befehl

java -cp .:/pfad/zur/jar/mysql-connector-java-3.0.14-production-bin.jar JdbcMysqlDemo01

eingibtst dann solls gehen

der cp besteht aus zwei ordnern (dem jar und dem ., wobei der . wie üblich der "momentane" ordner ist)
 
Nuja, ich hab die *.jar im gleichen Verzeichnis, wie meine *.class deshalb auch mein Aufruf:

java -cp .:mysql-connector-java-3.0.14-production-bin.jar JdbcMysqlDemo01

Müsste auch stimmen (Tab-Vervollständigung benutzt)...
 
wenn mich nix täuscht schreibst du laufend : statt ; und meiner meinung heißt das ; (aber ich kann mich auch täuschen 😉)
 
Ich glaub echt, dass es irgendein Treiber - Problem ist...

Ich hab mir grad nochmal den mysql-connector runtergeladen und mir ist aufgefallen, dass ich aus dieser tar.gz - Datei damals nur die mysql-connector-java[...].jar verwertet hab. Hätte man mit den anderen Dateien noch irgendwas machen müssen???
(ein Ordner "clover" ist z.B. noch dabei...)
 
Exception in thread "main" java.lang.NoClassDefFoundError: JdbcMysqlDemo01

das hat überhaupt nix mit dem treiber zu tun, weil dein Prog noch nicht einmal gestartet ist (sofern wir überhaupt noch über obige Fehlermeldung reden)

=> die ClassNotFound für den DBTreiber kann also noch gar nicht erreicht werden!

schau mal ob du mit

java JdbcMysqlDemo01

wenigstens dein Prog starten kannst
 
@Bleiglanz:

Wenn ich das Programm nur über java JdbcMysqlDemo01 aufrufe erhalte ich:

TREIBER NICHT GEFUNDEN!!!
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

...aber das sieht dann wohl so aus, als würde das Programm gestartete werden, weil ich die Fehlermeldung "TREIBER NICHT GEFUNDEN" ja vom Programm ausgeben lasse...
 
Hannes23 hat gesagt.:
@Bleiglanz:

Wenn ich das Programm nur über java JdbcMysqlDemo01 aufrufe erhalte ich:

TREIBER NICHT GEFUNDEN!!!
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

...aber das sieht dann wohl so aus, als würde das Programm gestartete werden, weil ich die Fehlermeldung "TREIBER NICHT GEFUNDEN" ja vom Programm ausgeben lasse...
dann muss
Code:
java -cp .:mysql-connector-java-3.0.14-production-bin.jar JdbcMysqlDemo01
auch gehen, wenn

mysql-connector-java-3.0.14-production-bin.jar

im gleichen Ordner liegt, also direkt neben

JdbcMysqlDemo01.class
 
Mhmmm....geht aber nicht 🙂

mysql-connector-java-3.0.14-production-bin.jar liegt im gleichen Ordner wie JdbcMysqlDemo01.class

...hab ich im Programm vielleicht einen anderen Treiber angegeben als ich dann im Endeffekt lade??

...und sind denn die anderen Dateien, die noch mit mysql-connector-java-3.0.14-production-bin.jar in dem tar.gz - File stecken wirklich völlig nutzlos??

Bin langsam echt am Verzweifeln *g*

Danke, Hannes
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben