SQL Exception

Milkaselnuss

Aktives Mitglied
Ich arbeite grade an nem kleinen Projekt und will dabei eine mysql tabelle auslesen.

Dazu hab ich folgenden Code:
Java:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.JOptionPane;

public class MySQLConnection {

	private static Connection con = null;
	
	//Hostname
	private static String dbHost = "db4.cwsurf.de";
	
	//Port -- Standard: 3306
	private static String dbPort = "3306";
	
	//Datenbankname
	private static String database = "X";
	
	//Datenbankuser
	private static String dbUser = "X";
	
	//Datenbankpasswort
	private static String dbPassword = "X";
	
	private MySQLConnection() {
		try{
		
			// Datenbanktreiber für ODBC Schnittstellen laden.
			// Für verschiedene ODBC Datenbanken muss dieser Treiber
			// nur einmal geladen werden.
			Class.forName("com.mysql.jdbc.Driver");
			
			//Verbindung zur ODBC-Datebank herstellen
			// Es wird die JDBC-ODBC-Brücke verwendet.
			con = DriverManager.getConnection("jdbc:mysql://" + dbHost + ":"
					+ dbPort + "/" + database + "?" + "user=" + dbUser + "&"
					+ "password=" + dbPassword);
		} catch (ClassNotFoundException e){
			JOptionPane.showConfirmDialog(null, "Fehler: Treiber nicht gefunden!", "Fehler", JOptionPane.OK_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE);
		} catch (SQLException e){
			JOptionPane.showConfirmDialog(null, "Fehler: Connection nicht möglich!", "Fehler", JOptionPane.OK_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE);
		}
	}
	
	private static Connection getInstance() {
		
		if (con == null)
			new MySQLConnection();
		return con;
	}
	public static void printScoreList() {
		
		con = getInstance();
		
		if (con != null){
			
			//Anfrage-Statement erzeugen.
			Statement query;
			try {
				query = con.createStatement();
				
				//Ergebnistabelle erzeugen und abholen.
				String sql = "SELECT dbPlayerName, dbScore, dbScore2, dbRank, dbDate " + "FROM actor " + "ORDER BY dbPlayerName";
				
				ResultSet result = query.executeQuery(sql);
				
				//Ergebnissätze durchfahren
				while (result.next()){
					String playerName = result.getString("dbPlayerName");
					int score = result.getInt("dbScore");
					String score2 = result.getString("dbScore2");
					String rank = result.getString("dbRank");
					String date = result.getString("dbDate");
					String output = playerName + " : " + score + " " + score2 + " Rank: " + rank + " (" + date + ")";
					System.out.println(output);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	//Fügt einen neuen Datensatz hinzu
	public static void insertScore(String playerName, int score, String score2, String rank, String date) {
		
		con = getInstance();
		
		if (con != null){
			
			//Anfrage-Statement erzeugen.
			Statement query;
			try {
				query = con.createStatement();
				
				//Ergebnistabelle erzeugen und abholen.
				String sql = "INSERT INTO actor(dbPlayerName, dbScore, dbScore2, dbRank, dbDate) VALUES('" + playerName + "', '" + score +"', '" + score2 +"', '" + rank +"', '" + date +"')";
				query.executeUpdate(sql);
				
				//Es wird der letzte Datensatz abgefragt
				ResultSet result = query.executeQuery("SELECT actor id, dbPlayerName, dbScore, dbScore2, dbRank, dbDate FROM actor ORDER BY actor_id desc LIMIT 1");
				
				//Wenn ein Datensatz gefunden wurde, wird auf diesen Zugegriffen
				if (result.next()){
					System.out.println("(" + result.getInt(1) + ")" + result.getString(2) + " " + result.getString(3) + " "  + result.getString(4) + " "  + result.getString(5) + " "  + result.getString(6));
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
		}
	}
	//Aktualisiert den Datensatz mit der übergebenen actorID
	public static void updateScore(String playerName, int score, String score2, String rank, String date, int actorId){
		
		con = getInstance();
		
		if (con != null){
			//Anfrage-Statement erzeugen
			Statement query;
			try {
				query = con.createStatement();
				
				String querySql = "SELECT actor_id, dbPlayerName, dbScore, dbScore2, dbRank, dbDate FROM actor WHERE actor_id = " + actorId;
				ResultSet result = query.executeQuery(querySql);
				
				if(result.next()){
					//Vorher
					System.out.println("Vorher: (" + result.getInt(1) + ")" + result.getString(2) + " " + result.getString(3) + " "  + result.getString(4) + " "  + result.getString(5) + " "  + result.getString(6));
				}
				
				//Ergebnistabelle erzeugen und abholen.
				String updateSql = "UPDATE actor SET dbPlayerName = '" + playerName + "', dbScore = '" + score + "', dbScore2 = '" + score2 + "', dbRank = '" + rank + "', dbDate = '" + date + "' WHERE actor_id = " + actorId;
				query.executeUpdate(updateSql);
				
				//es wird der letzte Datensatz abgefragt
				result = query.executeQuery(querySql);
				
				if (result.next()){
					System.out.println("NACHHER: (" + result.getInt(1) + ")" + result.getString(2) + " " + result.getString(3) + " "  + result.getString(4) + " "  + result.getString(5) + " "  + result.getString(6));
				}
				
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

Leider bekomme ich aber immer eine SQLException.
Fällt jemandem, was auf oder weiß jmd, wie ich weiterarbeiten kann?
Ich weiß ehrlich gesagt nicht weiter

MG, Milkaselnuss
 
Es gibt mir inder Console nur das aus:

Code:
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.
 
Zuletzt bearbeitet:
Es gibt auch Datenbank-Anbieter welche dir NUR eine MySQL-Datenbank (kostenlos) zur Verfügung stellen, welche du dann natürlich auch von außen erreichen kannst.

Ansonsten musst du dir selbst eine Schnittstelle in PHP Schreiben.
 

Neue Themen


Zurück
Oben