Wie bekommt man die JDBC connection zum laufen?(Eclipse)

  • Themenstarter Themenstarter DBNeuling
  • Beginndatum Beginndatum
D

DBNeuling

Gast
Hallo,
ich versuche gerade vergebens eine mysql Verbindung ueber eclipse herzstellen.
Login ueber die Konsole funktioniert.
Java:
import java.sql.*;

public class DBConnection{
  public static void main(String[] args) {
    System.out.println("MySQL Connect Example.");
    Connection conn = null;
    String url = "jdbc:mysql://HOST";
    //String url = "jdbc:mysql://localhost:3306/";
    String dbName = "DB";
    String driver = "com.mysql.jdbc.Driver";
    String userName = "user"; 
    String password = "pw";
    try {
      Class.forName(driver).newInstance();
      conn = DriverManager.getConnection(url+dbName,userName,password);
      System.out.println("Connected to the database");
      conn.close();
      System.out.println("Disconnected from database");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

Here is the error i get.
Code:
MySQL Connect Example.java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:169)
	at DBConnection.main(DBConnection.java:14)

Ich denke ich muss die JDBC runterladen und irgendwie in eclipse integrieren, kann dass vielleicht der Fehler sein? Wenn ja, wie binde ich die JDBC in mein Projekt ein?
 
Zuletzt bearbeitet von einem Moderator:
Danke fuer die Antwort, ich habe mir mal ein tutorial durchgeschaut. Das mit dem import scheint zu funktionieren. Habe nun das folgende zip importiert:
mysql-connector-java-5.1.14.zip

Ich glaube eigentlich braeuchte ich aber eine file namens jdbc.jar.
Kann diese aber leider nicht finden, da ich bei google suche immer wieder auf die oben genannte file stosse.
Jemand eine Ahnung wo ich die jdbc.jar file finde ;(?
 
hast du eine konkrete Fehlermeldung oder sonst ein Problem?
ansonsten glaube erstmal nicht an deinen Glauben
 
Ich habe eine aehnliche Fehlermeldung wie vorhin.
Code:
MySQL Connect Example.
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:169)
	at DBConnection.main(DBConnection.java:14)

Das zip file habe ich ueber den buildpath als externe jar eingebunden.
 
entpacke das zip, wenn es einen Unterordner lib mit einer jar-Datei drin gibt, dann ist es besser die,
wo hast du denn diese zip her, Link? in einem Tutorial so beschrieben?
 
Also das Paket habe ich direkt von der mysql Seite.
Ich habe das ganze entpackt und nun hoffe ich, dass der driver funktioniert.
Habe nun allerdings ein anderes Problem.
Code:
import java.sql.*;

public class DBConnection{
  public static void main(String[] args) {
	  
	
    System.out.println("MySQL Connect Example.");
    Connection conn = null;
    String url = "jdbc:mysql://MEINEURL:3306/";
    //String url = "jdbc:mysql://localhost:3306/";
    String dbName = "DB";
    String driver = "com.mysql.jdbc.Driver";
    String userName = "USER"; 
    String password = "PW";
    try {
      Class.forName(driver).newInstance();
      conn = DriverManager.getConnection(url+dbName,userName,password);
      System.out.println("Connected to the database");
      conn.close();
      System.out.println("Disconnected from database");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

Fehler

Code:
MySQL Connect Example.
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
	at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:343)
	at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2334)
	at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2371)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2163)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:378)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
	at java.sql.DriverManager.getConnection(DriverManager.java:582)
	at java.sql.DriverManager.getConnection(DriverManager.java:185)
	at DBConnection.main(DBConnection.java:17)
Caused by: java.net.UnknownHostException: MEINEURL
	at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
	at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:849)
	at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1200)
	at java.net.InetAddress.getAllByName0(InetAddress.java:1153)
	at java.net.InetAddress.getAllByName(InetAddress.java:1083)
	at java.net.InetAddress.getAllByName(InetAddress.java:1019)
	at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:244)
	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:292)
	... 15 more
Also so wie ich das sehe wird das ganye durch meinen host verursacht. Ich wuesste aber nicht woran das liegt.
Den host habe ich wie oben beschrieben angegeben:
String url = "jdbc:mysql://MEINEURL:3306/"
Habe es auch schon ohne den port 3306 versucht.
Oder ist der JDBC driver den ich importiert habe falsch?
 
es gibt auch JAVA-Tags statt CODE-Tags

> UnknownHostException: MEINEURL
sagt dir nichts? MEINEURL ist doch nichts, womit ein Programm etwas anfangen kann, da sollst du irgendwas eintragen,

die auskommentierte Variante mit localhost klingt schon weitaus sinnvoller, localhost ist ein bekannter Begriff für den eigenen lokalen PC,
das schon ausprobiert?
 
Sorry ich war gerade essen. Also MEINEURL habe ich nur eingetragen, weil ich die Passwoerter etc. hier nicht angeben wollte.
Dahinter steckt schon eine echte url und ueber die Konsole kann ich mich auch auf den mysql server einwaehlen.
Kann es sein, dass der port nicht stimmt, oder ist es immer der port 3306?
 
unter Windows kannst du in der Konsole
netstat -a
eintippen und so schauen, welche Ports belegt sind

UnknownHostException klingt aber danach als wenn es Probleme mit der Bestimmung des Rechners an sich gibt,
ist es denn localhost?
 
Also es ist nicht localhost. Das ganze hat in etwa die folgende Form:
thx-mysql1.info.xzx.vam.de
Habe die url mal etwas entfremdet...
 
und was genau ist das, eine Webseite, ein Webserver, wem gehört der, ist der öffentlich zugängig, im lokalen Netzwerk,
funktioniert ping usw?

auf einen 1000km entfernten Computer zuzugreifen ist aber nun ganz gewiss kein Anfänger-Thema mehr,
auch nicht gerade für die ersten Versuche mit JDBC geeignet,

naja, im Grunde: ich kann dazu kaum mehr was sagen 😉
 
wie gesagt: erstmal ping versuchen bzw. allgemeine Netzwerktools, vielleicht einen bekannten SQL-Client, der sich zu verbinden versuchen sollte,
Ansprechparter für Netzwerk vorhanden?
 
Ok sehr peinlich, ich hatte in der host adresse einen typo. Nun bekomme ich aber immernoch einen Fehler ;(.
Java:
MySQL Connect Test.
java.sql.SQLException: Access denied for user 'chromatin'@'asinus.binfo.wzw.tum.de' (using password: YES)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:911)
	at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3953)
	at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1276)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2048)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:723)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
	at java.sql.DriverManager.getConnection(DriverManager.java:582)
	at java.sql.DriverManager.getConnection(DriverManager.java:185)
	at DBConnection.main(DBConnection.java:17)
Komischerweise kann ich mich wie gesagt ueber command line normal einloggen. Woran kann das denn liegen? Muss mich der admin eve irgendwie freischalten oder muss ich beim user noch etwas angeben?
 
> ueber command line normal einloggen

eine Command line auf dem dortigen Rechner oder von lokal wie genau übers Netz?
wie gesagt versuche auch fertige Tools, etwa
MySQL :: MySQL Query Browser

nach 'Access denied for user' kann man bestimmt im Internet gut suchen

durchaus denkbar dass es Einschränkungen je nach Quelle des Logins gibt
 
Ok nochmals ich kurz.
Also ich konnte noch keine gute Loesung hierzu finden, aber mir ist etwas aufgefallen.
Angemeldet wird ja chromatin@asinus... Also laut Fehlermeldung...
Aber eigentlich sollte da doch stehen: chromatin@tum-mysql1...
Oder nicht? Den asinus habe ich ja nirgendwo angegeben.
 

Zurück
Oben