2012-03-31 13 views
0

Ich versuche, Werte aus der SQLite - Datenbank einzulesen, und ich habe die folgende Frage: Welche Datenstruktur würden Sie verwenden, wenn die API nur Zeilen für Zeile ohne die Möglichkeit zu überprüfen, wie viele Zeilen es gibt? Ich möchte betonen, dass ich am Ende ein zweidimensionales Array zurückgeben möchte ... Würdest du eine Liste von Listen erstellen und dann konvertieren?Java: Lesen von Werten aus der Datenbank unbekannter Größe

+0

Hilfreiche Seite - http://stackoverflow.com/questions/778173/streaming-data-through -spring-jdbc-unbekannte Länge – Coffee

Antwort

1

Ich denke, es ist besser Liste der Objekt zurückkehren Sie seine Daten versuchen zu bekommen, wenn Sie zum Beispiel alle Schüler bilden Datenbank erhalten möchten, können Sie Klasse für das machen könnte:

public final class Student { 
    private int id; 
    private String name; 
    private int age; 

    public Student(int id, String name, int age) { 
    this.id = id; 
    this.name = name; 
    this.age = age; 
    } 

    public int getId() { 
     return this.id; 
    } 

    // other getter methods 
} 

dann können Sie abrufen in allen Studentenliste

public List<Student> getAllStudents() throws SQLException { 
    List<Student> students = new ArrayList<Student>(); 

    String select = "SELECT * FROM students"; 
    Statement statement = connection.createStatement(); 
    ResultSet resultSet = statement.executeQuery(select); 

    while (resultSet.next()) { 
     int id = resultSet.getInt(1); 
     String name = resultSet.getString(2); 
     int age = resultSet.getInt(3); 

     Student student = new Student(id, name, age); 
     students.add(student); 
    } 

    return students; 
} 

bearbeiten: die Größe der Ergebnismenge zu erhalten, können Sie resultset.last(), dann rufen resultset.getRow() aufrufen, es wurde hier diskutiert:

How do I get the size of a java.sql.ResultSet?

How to get a number of rows a ResultSet contains?

ResultSet resultSet = ps.executeQuery(); 
int rowcount = 0; 
if (resultSet.last()) { 
    rowcount = resultSet.getRow(); 
    resultSet.beforeFirst(); 
} 

dann können Sie Ihre 2D-Array bauen:

String[][] result = new String[rowCount][ColumnCount]; 

    int i=0; 
    while (resultSet.next()) { 
     // build result[i] array 
     i++; 
    } 
+0

Ich brauche keine Objekte, ich brauche 2D-Arrays – Bober02

+0

siehe die aktualisierte Antwort –

Verwandte Themen