# JDBC Einbinden Fehler



## trash (5. Sep 2010)

Hey,

ich habe mir jetzt den MySQL Connector J als JDBC Driver heruntergeladen und die genannte Datei in meinen Classpath eingefügt. Das ist doch der Ordner, wo auch meine ganzen Projektdateien gelagert sind oder?

_Ich arbeite mit BlueJ, einer Lernentwicklung, da wird für jedes Projekt ein Ordner angelegt mit den Java Dateien, da habe ich nun die connector.jar reinkopiert. Richtig?_

Auf jeden Fall zeigt er mir beim kompilierten Code eine Fehlermeldung an, dass er .getInstance() nicht finden kann (cannot fnd symbol)

Ich denke, ich habe den Driver falsch eingebunden. Kann mir da wer helfen?

Hier der Code


```
import java.sql.*;

public class gui {

Connection con = null;
Statement stmt = null;
ResultSet rs = null;

public static void main(String args[]){

try{
Class.forName( "com.mysql.jdbc.Driver" ).getInstance();
}
catch (ClassNotFoundException e){
e.printStacjTrace();
System.exit(1);
}
try{
con = DriverManager.get.Connection("jdbc:mysql://localhost","root", "");
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT name FROM test");

while (rs.next()) {
System.out.println("Name:       "+rs.getString(1));
}
stmt.close();
con.close();
}
catch (SQLException e){
e.printStackTrace();
return;
}
}
}
```


----------



## SlaterB (5. Sep 2010)

'beim kompilierten Code' ist so ziemlich die einzige Stelle, bei der kaum ein Fehler zu beobachten ist,

während du den Quellcode eintippst könnten gute Entwicklungsumgebungen direkt Rückmeldung geben,
beim Kompilieren sollten spätestens Fehler gemeldet werden, dann erhälst du wahrscheinlich auch keinen kompilierten Code,
beim Ausführen des Codes trefen wieder Fehler auf, z.B. Exceptions,

was genau ist es denn davon und wie lautet die komplette Fehlermeldung bitte?


----------



## Gast2 (5. Sep 2010)

trash hat gesagt.:


> _Ich arbeite mit BlueJ, einer Lernentwicklung, da wird für jedes Projekt ein Ordner angelegt mit den Java Dateien, da habe ich nun die connector.jar reinkopiert. Richtig?_



Ziemlich sicher nicht richtig. Einfach eine lib irgendwo hin kopieren funktioniert in den wenigsten IDEs. Du musst die lib schließlich auch dem Classpath hinzufügen.

BlueJ - Tip Of The Week Archive

Nebenbei: Warum nutzen eigentlich Schulen daurend BlueJ - nicht Eclipse oder meinetwegen Netbeans... *würg*


----------



## trash (5. Sep 2010)

SlaterB hat gesagt.:


> was genau ist es denn davon und wie lautet die komplette Fehlermeldung bitte?



Also beim der ersten Kompilierung zeigt er mir an symbol not found und das in der line wo getInstance(); steht.

Mein Vorposter sagt, dass ich den Driver falsch kopiert habe. Wo finde ich den den richtigen CLASSPATH? Kann ich den also nicht in mein Java BlueJ Projekt Ordner reinkopieren?


----------



## Gast2 (5. Sep 2010)

Hast du dir den Link durchgelesen?


----------



## Gelöschtes Mitglied 5909 (5. Sep 2010)

die Methode getInstance() existiert nicht. Die Methode die meinst ist newInstance()

aber da du mit der instanz eh nix machst, reicht ein einfaches Class.forName("..") völlig aus


----------



## tuttle64 (6. Sep 2010)

trash hat gesagt.:


> DriverManager.get.Connection("jdbc:mysql://localhost","root", "");




Obiger Aufruf ist fehlerhaft, der Aufruf sollte lauten: DriverManager.getConnection(....) 

Die Klasse gui produziert haufenweise Fehler wie "get cannot be resolved or is not a field". Diese Methode printStacjTrace() ist ebenfalls unbekannt.


----------



## trash (11. Sep 2010)

Ja es liegt ja daran, dass ich die lib nicht richtig einbinden kann 

Grundlegende Fragen:

1. Kann ich meinen JDBC Treiber ( oder auch andere Bibliotheken ) sofort beim Kompilieren im Source Code verankern?

_Bsp:CLASSPATH load o.ä (oberhalb der import.java.*; befehle)_

2. Wenn Nein, wie binde ich dann den Treiber in mein Programm ein? In welchem Ordner muss dieser hineinkopiert werden ( liegt als .jar vor - driver.jdbc4.jar) Woher weiß mein Programm, dass ich diese Bibliothek brauche? import.java.sql.*;stellt diese Verbindung her?

3. Wenn ich das Endprogramm kompiliere und auf anderen Rechnern ausführe, dann fehlt mir ja der JDBC Treiber. 

Muss ich mir dann eine Methode schreiben, die mir die driver.jdbc4.jar dann immer in mein CLASSPATH Ordner kopiert, um sicherzugehen, dass die Programme laufen?

(PS: Ich weiß über Netbeans o.ä geht das einfacher, aber wir haben leider eine BlueJ Umgebung und da muss das auch laufen)



Danke.


----------



## trash (14. Sep 2010)

hat den keiner eine Idee?


----------



## SlaterB (14. Sep 2010)

1.

jeder Source Code muss kompiliert werden,
was anderes als import-Befehle gibt es nicht, nein

2. 

BlueJ - Tip Of The Week Archive
Tip 5: Using Custom Class Libraries

bei google-Suche habe ich auch von einem lib-Verzeichnis in BlueJ gelesen, was darin steht wird vielleicht immer genutzt

3.
> Muss ich mir dann eine Methode schreiben,

das klingt ja fast wie eine Methode zu schreiben, die Windows bei Fehlen installiert,
man muss anderen Rechnern eine gewisse Autonomie zugestehen, 
du übergibst deine Klassen + benötigte zusätzliche Libraries, die sollten dann auf dem anderen Rechner passend zusammengestellt werden,

wobei es möglicherweise noch bessere verknüpfte Sammlungen gibt, etwa wenn man ein eigenes Jar baut,
muss jemand anders sagen


----------

