我正在尝试从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/

10-09 08:31
查看更多