JDBC Verbindung von Java zu MySQL

andreano

Mitglied
Hallo liebe gemeinde,
ich fange gerade in der Schule mit JDBC in Java an und unsere aufgabe ist eine Verbindung herzustellen.
In meinen Augen habe ich "alles richtig" gemacht aber in den Augen von Eclipse leider nicht :)
Meine Info Quellen lauten:
https://www.dpunkt.de/java/Programmieren_mit_Java/Java_Database_Connectivity/9.html
http://dev.mysql.com/doc/refman/5.1...connector-j-examples-connection-drivermanager
http://www.itblogging.de/java/java-mysql-jdbc-tutorial/

Folgendes habe ich in Quellcode und Info anzubieten:
JDBC Treiber wurde über

  1. Project Properties (Rechtsklick auf das Projekt >> Properties)
  2. Java Build Path
  3. Libraries
  4. Add External JARs…
  5. mysql_treiber.jar
Hinzugefügt.


Classe: MySQLConnection
Java:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
public class MySQLConnection{
private static Connection con = null;
private static String dbHost = "localhost";	// Hostname
private static String dbPort = "3306";		// Port -- Standard: 3306
private static String dbName = "test_db";	// Datenbankname
private static String dbUser = "aleks";		// Datenbankuser
private static String dbPass = "test";		// Datenbankpasswort
 
private MySQLConnection(){
	try {
		Class.forName("com.mysql.jdbc.Driver");	// Datenbanktreiber für JDBC Schnittstellen laden.

		// Verbindung zur JDBC-Datenbank herstellen.
		con = DriverManager.getConnection("jdbc:mysql://"+dbHost+":"+ dbPort+"/"+dbName+"?"+"user="+dbUser+"&"+"password="+dbPass);
	} catch (ClassNotFoundException e) {
		System.out.println("Treiber nicht gefunden");
	} catch (SQLException e) {
		System.out.println("Verbindung nicht moglich");
		System.out.println("SQLException: " + e.getMessage());
        System.out.println("SQLState: " + e.getSQLState());
        System.out.println("VendorError: " + e.getErrorCode());
	}
  }
 
private static Connection getInstance(){
	if(con == null)
		new MySQLConnection();
	return con;
}
 
  //Gebe Tabelle in die Konsole aus
  public static void printNameList(){
	  con = getInstance();
 
	  if(con != null){
      // Abfrage-Statement erzeugen.
      Statement query;
      try {
    	  query = con.createStatement();
 
    	  // Tabelle anzeigen
    	  String sql = 
        		"SELECT kundeid, vorname, nachname, email FROM kunde";
    	  ResultSet result = query.executeQuery(sql);
 
        // Ergebnisstabelle durchforsten
    	  while (result.next()) {
          String kundeid = result.getString("kundeid"); 
          String vorname = result.getString("vorname"); 
          String nachname = result.getString("nachname"); 
          String email = result.getString("email");           
          String info = kundeid + ", " + vorname + ", " + nachname + ", " + email;
          
          System.out.println(info);
    	  }
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
}

Classe: Test
Java:
public class Test{
  public static void main(String[] args){
    // Abfrage aller vorhandenen Daten in der Tabelle
    MySQLConnection.printNameList();
  }
}


Fehlerausgabe in der Console:
Java:
Verbindung nicht moglich
SQLException: 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.
SQLState: 08S01
VendorError: 0

Beste Grüße Java anfänger Aleks ;)
 
Zuletzt bearbeitet:
Hallo Gemeinde :)

habe das obige Beispiel von adreano mit meinen erforderlichen Daten angepasst, leider bekomme ich keine Verbindung.
Selbst nach Ausschalten der Windows Firewall funktioniert es nicht.
Auch mit
Java:
Class.forName("org.gjt.mm.mysql.Driver");
mag es nicht.

Woran könnte dieses Unterfangen noch scheitern?

Bitte Euch um Ideen, danke


Habe nun die selbe Tabelle auf meinen lokalen XAMPP integriert und mit folgenden Paramentern aufgerufen:
Java:
	private static String dbHost = "127.0.0.1"; // Hostname
	private static String dbPort = "3306"; // Port -- Standard: 3306
	private static String dbName = "dbName"; // Datenbankname
	private static String dbUser = "dbUser"; // Datenbankuser
	private static String dbPass = "pass"; // Datenbankpasswort
Das funktioniert.

Am Hostname kann es auch nicht liegen, habe mich mit cmd auf den Server - welchen ich erreichen möchte, verbunden.

Nun bleibt nur noch der Port?
Oder kann es auch an den Rechten liegen?
Auf dem Server steht in "is_grantable" NO...ist vielleicht das das Problem?
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück