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



## DBNeuling (12. Jan 2011)

Hallo, 
ich versuche gerade vergebens eine mysql Verbindung ueber eclipse herzstellen.
Login ueber die Konsole funktioniert.

```
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.

```
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?


----------



## SlaterB (12. Jan 2011)

'jdbc eclipse tutorial' suchen, man findet anscheinend gar Videos:
YouTube - MySQL Datenbank Java Eclipse JDBC Tutorial
kann grad selber nicht anschauen


----------



## DBNeuling (12. Jan 2011)

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 ;(?


----------



## SlaterB (12. Jan 2011)

hast du eine konkrete Fehlermeldung oder sonst ein Problem?
ansonsten glaube erstmal nicht an deinen Glauben


----------



## DBNeuling (12. Jan 2011)

Ich habe eine aehnliche Fehlermeldung wie vorhin.

```
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.


----------



## SlaterB (12. Jan 2011)

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?


----------



## DBNeuling (12. Jan 2011)

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.

```
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 


```
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?


----------



## SlaterB (12. Jan 2011)

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?


----------



## DBNeuling (12. Jan 2011)

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?


----------



## SlaterB (12. Jan 2011)

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?


----------



## DBNeuling (12. Jan 2011)

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...


----------



## SlaterB (12. Jan 2011)

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


----------



## DBNeuling (12. Jan 2011)

Naja es ist ein server. Auch nicht 1000km entfernt.


----------



## SlaterB (12. Jan 2011)

wie gesagt: erstmal ping versuchen bzw. allgemeine Netzwerktools, vielleicht einen bekannten SQL-Client, der sich zu verbinden versuchen sollte,
Ansprechparter für Netzwerk vorhanden?


----------



## DBNeuling (12. Jan 2011)

Ok sehr peinlich, ich hatte in der host adresse einen typo. Nun bekomme ich aber immernoch einen Fehler ;(.

```
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?


----------



## SlaterB (12. Jan 2011)

> 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


----------



## DBNeuling (12. Jan 2011)

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.


----------

