MySQL Anzahl gefundener Datensätze bleibt gleich, auch wenn mehr existieren und ausgegeben werden

Kandum

Mitglied
Hey Leute,

ich arbeite mich momentan in die Datenbankverwaltung mit Java ein. Ich habe es auch bereits geschafft das er mir die Datensätze sowie die Anzahl der gefunden anzeigt. Allerdings bleibt die Anzahl der gefundenen Datensätze immer gleich - auch wenn ich weitere Datensätze in die DB eintrage, welche er mir auch der in der Konsole anzeigt.

acb8d616a1cd.png


Selbstverständlich habe ich auch gegoogled und auf diversen Webseiten nach einer Lösung gesucht aber nichts gefunden was mir helfen könnte oder es gab so viele verschiedene Kategorien das ich überhaupt nicht durchgeblickt habe und es weiterhin auch nicht tue... :bahnhof:

Ich arbeite mit:
- BlueJ
- Windows 7
- MySQL

Quellcode:
Java:
import java.sql.*;
import java.util.ArrayList;
import java.util.Iterator; 

public class MySQLConnector {
    private Connection con;
    private Statement stmt;
    private ResultSet rs_Result;
    private ArrayList<String[]> result = new ArrayList<String[]>(); 
    
    private static final String str_Host = "******";
    private static final String str_DbName = "******";
    private static final String str_DbTable = "*****";
    private static final String str_User = "*****";
    private static final String str_Pass = "*****";
    
    public MySQLConnector () {
        try {
            // Versuche eine Verbindung herzustellen:
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://"+str_Host+"/"+str_DbName, str_User, str_Pass);

            stmt = con.createStatement();
            
            // Versuche eine Abfrage aller Datensätze zu erstellen, auszuführen und anzuzeigen:
            String str_Query = "SELECT * FROM " + str_DbTable + ";";
            rs_Result = stmt.executeQuery(str_Query);
            
            // Gebe die Anzahl aller gefundenen Spalten aus:
            int i_Datensaetze = rs_Result.getMetaData().getColumnCount();
            System.out.println("Gefundene Datensaetze: " + i_Datensaetze);
            
            
            // Ausgabe aller Datensätze:
            while ( rs_Result.next() ) {
                String[] str = new String[7];
                for (int k = 1; k <= i_Datensaetze; k++) {
                    str[k-1] = rs_Result.getString(k);
                } // for
                result.add(str); 
            } // while
            
            printDBData(result);
            
            stmt.close();
            con.close();
            
        } catch (ClassNotFoundException CNFE) {
            System.out.println("Fehler bei MySQL-JDBC-Bridge: " + CNFE);
            return;
            
        } catch (SQLException SQLE) {
            System.out.println("Fehler bei Tabellenabfrage: " + SQLE);
            return;
            
        } // try
        
    } // construct

    private void printDBData(ArrayList list) { 
        for (Iterator iter = list.iterator(); iter.hasNext();) { 
            String[] str = (String[]) iter.next(); 

            for (int i = 0; i < str.length; i++) { 
                System.out.print(str[i] + "\t"); 
            } 
            System.out.print(System.getProperty("line.separator")); 
        } 
    } 
    public static void main() {
        new MySQLConnector();
        
    } // + static void main()
    
} // + class MySQLConnector

Ich freue mich über jede Hilfe! Wenn jemand einen Link zu der Problemlösung hat auch über diesen!

Vg,
Kandum
 
[java=29]
// Gebe die Anzahl aller gefundenen Spalten aus:
int i_Datensaetze = rs_Result.getMetaData().getColumnCount();
System.out.println("Gefundene Datensaetze: " + i_Datensaetze);
[/code]
Dein Kommentar ist richtig - du gibst die Anzahl der Spalten und nicht die Anzahl der gefundenen Datensätze aus.
Column = Spalte
 
mit
Java:
rs_Result.getMetaData().getColumnCount()
ermittelt Du die Anzahl der Spalten der Tabelle die deine Daten enthält. Die ändert sich natürlich nicht.

Die oben ermittelte Anzahl der Spalten nutzt du dann um aus denen die Daten zu lesen und in
result zu speichern. Mit
Java:
result.size()
erhältst du die Anzahl der Datensätze.
 
Oh man, wie bin ich bloß auf den Kommentar "// Gebe die Anzahl aller gefundenen Spalten aus:" gekommen?... Ich glaube durch Fernsehen verblödet man echt :autsch:

Danke jungs!
 

Zurück
Oben