Java:从未知大小的数据库中读取值

标签 java database sqlite

我正在尝试从 SQLite 数据库中读取值,但有以下问题:如果 API 只允许您逐行处理而无法检查有多少行,您会使用什么数据结构?我想强调一个事实,我想在最后返回一个二维数组...您可以列出列表然后进行转换吗?

最佳答案

我认为最好返回您尝试获取其数据的对象列表,例如,如果您想获取所有学生的数据库,您可以为此创建类(class):

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

关于Java:从未知大小的数据库中读取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9959098/

相关文章:

objective-c - SQLite insert语句不会在表中放置记录

java - 如何在 Tomcat 中为 Spring 提供一个类?

database - 如何使用 Sequelize Migrations 删除非键列而不删除相关记录?

android - 带有动态分隔符的 ListView -数据库

sql - 如何在基于多列的表上分配唯一 ID

mysql - WampServer mySQL

android - 在 BroadcastReceiver 中使用 sqlite

java - 如何从依赖项目添加资源

java - 如何使用 JAVA servlet 捕获请求

java - 网络编程语言