mysql-connector-java-*.jar, MySql ResultSet - Alle ROWs ausgeben?

  • Themenstarter Themenstarter sh
  • Beginndatum Beginndatum

sh

Aktives Mitglied
Hallo

MySQL Datenbank Struktur:
Code:
 -----------------------
| groups   | dates         |
 -----------------------
| grp1      | date1         |
| grp2      | date2         |
|____________________|
erstmal mein Code:
Code:
			Connection mysql_con;
			Class.forName("com.mysql.jdbc.Driver");
			mysql_con = DriverManager.getConnection("jdbc:mysql://"+mysql_server+"/"+mysql_dbname, mysql_user, mysql_pass);
			Statement st = mysql_con.createStatement();	
			st.execute("SELECT * FROM "+mysql_table);
			ResultSet rst = st.getResultSet();
			if(!rst.first()) {
				System.out.println("no entries!");
			} else {
				while(rst.next()) {
                                        System.out.println("group: "+rst.getString("groups")+" date: "+rst.getString("dates"));
				}
			}
			st.close();
			mysql_con.close();

sollte das
Code:
				while(rst.next()) {
                                        System.out.println("group: "+rst.getString("groups")+" date: "+rst.getString("dates"));
				}
nicht:
Code:
group: grp1 date: date1
group: grp2 date: date2
ausgeben? Auf jedenfall ist das, was ich ich will. Bei mir gibt er jedoch nur eine Zeile aus, nämlich die letzte. Was mach ich falsch?
 
Java:
if(!rst.first()) {
Damit setzt du den Zeiger auf den ersten Datensatz. Mit rst.next() springst du einen weiter und bist beim zweiten. Den gibst du dann aus.

das rst.first() kannst du weglassen. Wenn keine Datensätze vorhanden sind liefert dir next() direkt false zurück.
 
Wenn du den first() check noch drin lassen willst dann kannst du vor der schleife auch beforeFirst() ausführen, dann sollte das ganze auch funktionieren.
 

Zurück
Oben