我正在尝试从SQLite数据库中读取值,我有以下问题:如果API仅允许您逐行进行而又无法检查有多少行,那么您将使用哪种数据结构?我想强调一个事实,就是我想最后返回一个二维数组。。。请问您要列出列表然后进行转换吗?
最佳答案
我认为最好返回您尝试获取其数据的对象列表,例如,如果您想从数据库中获取所有学生,则可以为此创建类:
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();
}
然后您可以构建2D数组:
String[][] result = new String[rowCount][ColumnCount];
int i=0;
while (resultSet.next()) {
// build result[i] array
i++;
}
关于java - Java:从大小未知的数据库中读取值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9959098/