2012-03-31 53 views
0

我想从SQLite数据库中读取值,我有以下问题:如果API只允许您逐行进行,而没有检查有多少行的可能性?我想强调一个事实,即我想在最后返回一个二维数组......你会列出列表然后转换吗?Java:从未知大小的数据库中读取值

+0

有用的页面 - http://stackoverflow.com/questions/778173/streaming-data-through -spring-jdbc-unknown-length – Coffee 2012-03-31 19:47:44

回答

1

我认为它的更好,如果你想获得的所有学生形成数据库,你可以做类,要回到你想获得它的数据对象的列表,例如:

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 
} 

然后你可以检索在列表中的所有学生

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; 
} 

编辑: 得到的结果集的大小,你可以调用则resultset.last(),然后调用由resultset.getRow(),它是在这里讨论:

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(); 
} 

那么你可以建立你的二维数组:

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

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

我不需要对象,我需要2D数组 – Bober02 2012-03-31 20:04:45

+0

查看更新的答案 – 2012-03-31 20:22:28