Java SQL Daten zu ener Liste

JavaBeginner

Ensign
Registriert
Juli 2015
Beiträge
142
Hallo, hätte da mal eine Frage bezüglich dem abfragen von mehrere Daten aus einer MySQL-Datenbank.
In meiner Tabelle habe ich die Attribute: id, Alter, Nachname
Nun möchte ich über Java sämtliche Nachnamen und das dazugehörige Alter erhalten. Ich habe es folgendermaßen probiert
Code:
  try {
	                    Statement s = Haupt.sqlconnecting().createStatement();
	                    String sqlQuery = ("select Alter,Nachname from Daten;");
	                    ResultSet resultSet1 = s.executeQuery(sqlQuery);
	                    while(resultSet1.next()){
	                    	System.out.println(resultSet1.next());
	                    }

	        			resultSet1.close();
	                    
	                } catch (Exception e) {

	                }
Hiermit wollte ich nur schauen ob ich überhaupt auf dem richtigen Weg bin, bekam jedoch keinerlei Ausgabe. Hat jemand eine Idee wie ich mein ziel erreichen kann?
Danke.
 
Gemäß https://docs.oracle.com/javase/tutorial/jdbc/basics/retrieving.html musst du mit dem ResultSet anders umgehen.

Mal korrigiert:
Code:
try {
    Statement s = Haupt.sqlconnecting().createStatement();
    String sqlQuery = ("select Alter,Nachname from Daten;");
    ResultSet resultSet1 = s.executeQuery(sqlQuery);
    while(resultSet1.next()){
        String lastName = resultSet1.getString("Nachname");
        System.out.println(lastName);
    }

    resultSet1.close();
    
} catch (Exception e) {

}

Warum eigentlich ein try {} catch (Exception e) {} block um alles? Das ist schlechter stil. Vmtl. gibt's direkt 'ne Exception, weil du nur einen Datensatz in der Tabelle "Daten" hast und versuchst, mit dem Cursor direkt weiterzugehen.
 
Naja das einzig "kritische" ist das Ausführen und Auslesen des SQL-Statements, die ersten Zeilen müssten also nicht unbedingt im try stehen. Halte ich ich aber nicht für so tragisch in dem Umfang, inhaltlich gehört es ja auch 100% dazu.
 
Naja, es ist nicht sinnvoll, eine Exception einfach zu fangen und dann nichts damit anzustellen.

Besser wäre es, eine RuntimeException zu werfen und darin die "normale" Exception zu verpacken, oder gleich eine eigene Fehlerbehandlungslogik (User informieren, etc.) zu implementieren.
 
Am besten auch try with resources verwenden. Dann wird das resultSet1 in jedem Fall geschlossen.

Code:
                Statement s = Haupt.sqlconnecting().createStatement();
		String sqlQuery = "SELECT Alter, Nachname FROM Daten;";
		try(ResultSet resultSet1 = s.executeQuery(sqlQuery)){
			while(resultSet1.next()){
		              String lastName = resultSet1.getString("Nachname");
		              System.out.println(lastName);
		        }
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
 
Zurück
Oben