Erste Schritte Datenbank SQL erklärung

kill_dmp

Aktives Mitglied
hi all

ich habe eine frage zu java und MySQL da ich noch ziemlich am anfang bin und nicht alles verstehe brauche ich eine erklärung wie die ab und anfragen da genau gehen

ich habe aus einen tut schon mal ein teil herraus bekommen aber ich komme nicht weiter, da ich nicht weis was ich grade überhaupt mache 😳

Java:
import 
java.beans.Statement;
import java.sql.*;

public class Main {
	
	//variabel 
	Statement stmt;       
	ResultSet rs;
	//main
	public static void main(String[] args) {

		try {
			Class.forName("com.mysql.jdbc.Driver");
			
			String url     = "jdbc:mysql://999.999.999/Test";       
			Connection con = DriverManager.getConnection(url,"XXX", "XXX");        
			stmt = con.createStatement();
			rs = stmt.executeQuery("SELECT vorname, nachname FROM users");
			int anzahlZeilen = stmt.executeQuery("UPDATE users SET vorname = 'Harry' WHERE vorname='Larry' ");
			while (rs.next())       
			{        
			    String  vorname = rs.getString("vorname");        
			    String  nachname = rs.getString("nachname");        
			    System.out.println("Vorname: "+vorname+" | Nachname: "+nachname);        
			}
		} catch (SQLException e) {
		System.out.println("fehler");
		}

	}

}

in zeile 16 ist "jdbc:mysql://" was ist das, was macht es und brauche ich es?

zeile 19 und 20 da verstehe ich garnix.

ich hoffe mal das die fragen nicht zu blöd sind aber ich versuche zu verstehen was da genau passirt so das ich auch weis was ich mache ^^

ip und benutzer wie auch pw habe ich weggelassen sind mit 999.999.999 und xxx xxx
 
Zuletzt bearbeitet:
jdbc:mysql: wirst du solange brauchen, wie du mittels JDBC-Treiber (Java DataBase Connector) auf die MySQL Datenbank zugreifen willst.
Mittels der Zeile wird mittels JDBC-Treiber auf eine MySQL Datenbank auf der IP Adresse 999.999.999 zugegriffen, was eigentlich keine IP-Adresse ist, da mindestens 4 Oktette (8-bit Paare) für eine IPv4-Adresse vorhanden sein müssen, hier sind es aber nur 3 und außerdem ist 999 nicht gültig. Dann wird über /Test noch auf die Datenbank "Test" zugegriffen.
In Zeile 17 werden deine Login-Daten mitgegeben.

Zeile 19 führt eine Abfrage (ein sog. Statement) über den JDBC-Treiber aus. Das muss im Fall MySQL immer ein MySQL-Befehl sein (SQL ist eine eigene Sprache, die nichts mit Java zutun hat), hier steht es für "Hole für alle Datensätze den 'vornamen' und 'nachnamen' aus der Tabelle 'users'".
In Zeile 20 wird über einen MySQL Befehl ein Datensatz aktualisiert (aktualisiere Tabelle 'users', setze 'Vorname' = Harry, dort wo der 'Vorname' = Larry ist).

Über die while Schleife werden dann alle Datensätze geholt, solange es noch Datensätze gibt, da ein ResultSet immer nur einen Datensatz beinhalten kann.

Da dieses ResultSet eine Art Array zurück gibt, wird noch der zuvor mittels SQL Befehl gelesene vorname und nachname ausgelesen und in verwendbare Strings gepackt.
 
Zuletzt bearbeitet:
ok vielen dank für die erklärung hat mir schon mal weiter geholfen
habe aber noch eine frage
wieso bekomme ich ich immer in der console die ausgabe
Code:
fehlerjava.lang.ClassNotFoundException: com.mysql.jdbc.Driver

Java:
package MyFirstHsqlConnection;

import java.beans.Statement;
import java.sql.*;

public class Main {
	
	//variabel 
	
	//main
	public static void main(String[] args) {

		try {
			Class.forName("com.mysql.jdbc.Driver").newInstance();
			
		Connection con = DriverManager.getConnection("jdbc:mysql://178.254.xxx.xxx/Java", "xxx", "xxx");
		
		con.setReadOnly(true);
		
		Statement stmt = (Statement) con.createStatement();
		
		ResultSet rs = ((java.sql.Statement) stmt).executeQuery("Select * from DatenbankTest");
		
		while(rs.next()){
			System.out.println(rs.getInt(1)+" "+rs.getString(2));
		}
		
		rs.close();
		
		con.close();
 
Ja, die Klasse com.mysql.jdbc.Driver wird in deinem Classpath nicht gefunden.
Hast du von Oracle die zugehörige JDBC-MySQL Jar-Datei heruntergeladen und deinem Workspace hinzugefügt?
 
Zuletzt bearbeitet:
ich habe mysql-connector-java-5.1.15-bin.jar heruntergeladen dann habe ich rechsklick auf das projekt gemacht properties>java build path>libraries>add extenal(dann die .JAR aus gewält und ok.

wel das nicht geklapt hat habe ich von mysql direkt mysql-connector-java-gpl-5.1.26.msi runtergeladen
das hat auch nicht geklapt also habe ich google gefragt und google sagt nur lad die beiden daten runter
🙂
 
Es ist schwer die zu helfen, wenn es angeblich so gemacht wurde wie du schreibst, denn dann sollte es gehen.
Hast du das Problem denn auch, wenn du das Programm direkt in/über der/die IDE ausführst?
 
Welche IDE benutzt du denn? In Netbeans etwa findest du etwa unter dem Menüpunkt "Run" einige Auswahloptionen, die eigentlich selbsterklärend sein sollten.
Startest du dein Programm denn überhaupt per Hand über die Konsole, oder was machst du?

Beim überfliegen deines Codes ist mir aber zusätzlich noch eine Sache aufgefallen: Du willst sicherlich
Code:
java.sql.Statement
statt
Code:
java.beans.Statement
importieren.
 
Java:
Class.forName("com.mysql.jdbc.Driver").newInstance();
Das ist Blödsinn. Es reicht völlig, die Klasse zu laden. Einen neue Instanz zu erzeugen, die dann auch niemand nutzt ist unnötig und ein Overhead.
 
also ich nutze eclipse als prog.oberfläche

die
Java:
.newInstance();
ist auch raus

das mit den treiben hab ich hin bekommen nach ein parr stunden google

jetzt frage ich mich nur was das heisen soll

Java:
fehlercom.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.
 
Die Fehlermeldungen im Rahmen vom Verbindungsaufbau zu den verschiedenen Datenbanken sind leider oft nicht sehr aussagekräftig.
Prüfe zunächst mal, ob deine Datenbank überhaupt läuft.
Wie lauten die Verbindungsdaten?
Läuft die Datenbank auf den gleichen Rechner, wie dein Java-Programm?
Wie sieht dein Connection-String nun komplett aus?
Läuft die Datenbank lokal, so sollte das Muster ungefähr so aussehen:
Code:
jdbc:mysql://localhost:3306/mydatabase
 
ich habe jetzt auch mal ein parr sachen raus genoommen und der fehler kann jetzt nur noch in dem bereich liegen

wie man einen db testet ob sie leut weis ich leuder auch nicht ^^
Java:
package MyFirstHsqlConnection;

import java.beans.Statement;
import java.sql.*;

public class Main {
	
	//variabel 
	
	//main
	public static void main(String[] args) {

		try {
			Class.forName("com.mysql.jdbc.Driver");
			
		Connection con = DriverManager.getConnection("jdbc:mysql://178.254.26.***/Java", "root", "***");
		
		//con.setReadOnly(true);
		
		/*Statement stmt = (Statement) con.createStatement();
		
		ResultSet rs = ((java.sql.Statement) stmt).executeQuery("Select * from DatenbankTest");
		
		while(rs.next()){
			System.out.println(rs.getInt(1)+" "+rs.getString(2));
		}
		rs.close();
		 */
		
		con.close();
			
		}catch (Exception e) {
		System.out.println("fehler"+e);
		}

	}

}
ich nutze einen externen rootserver
und zur zeit logge ich mit auf der mysql datenbank mit root ein, da noch nicht alle accounts so sind wie ich sie gerne hätte
 
Zuletzt bearbeitet:
Heißt die Datenbank wirklich "Java" ?
Ist der Server so konfiguriert, dass ohne Portangabe in der Adresse auch tatsächlich auf den von dir gewählten Datenbankport zugegriffen wird?

Mit "Testen, ob die Datenbank läuft" meinte ich lediglich, dass du mal versuchst, direkt von der Maschine, auf der die DB denn installiert ist, über ein Admintool darauf zuzugreifen. Also falls du dort zB einen XAMPP laufen hast, etwa phpmyadmin...
 
also erst mal danke das du überhaubt auf die mail geantwortest hast, troz der ganzen rechtschreibfehler
die DB leuft und ich kann auch alles nutzen

so ist es bei mir aufgebaut wenn das hilft
 
Bei einem Rootserver würde ich erstmal mit Navicat oder vergleichbaren Programmen versuchen eine Verbindung aufzubauen. Der Zugriff auf die DB mit externen Programmen wird ab und zu geblockt oder die eigene Firewall blockiert. Deshalb ist phpMyAdmin nicht die beste Methode sowas zu prüfen.
 

Zurück
Oben