java - 将 JDBC 的结果集加载到二维表中

标签 java arrays object jdbc resultset

public void selectStudent() throws SQLException{
    try{
        con= this.getConnection();
        if(con!=null){
            // Create and execute an SQL statement that returns some data.
            String SQL = "SELECT * FROM dbo.Student";
            stmt = con.createStatement();
            rs = stmt.executeQuery(SQL);

            // Iterate through the data in the result set and display it.
            while (rs.next()) {
                for(int i=0;i<=5;i++){
                      data[rs.getRow()][i]=rs.getString(i+1);
                }
            }
            closeConnection();
        }else System.out.println("Error: No active Connection");
   }catch(Exception e){
        e.printStackTrace();
   }
}

我想将 JDBC SQL 查询的结果添加到二维对象数组中,以供将来在表 (swingUI) 中使用。 不幸的是,上面的代码不起作用,我不知道为什么 - 我在将结果保存到数据对象时遇到错误。

我得到的错误类型是NullPointerException。

最佳答案

我认为你有一个像这样的对象:

Object[][] data; 

为此,您会收到错误NullPointerException,因为它尚未初始化,因此在将结果放入此数组之前,您应该像这样初始化它:

data = new String[numberOfRow][6];
while (rs.next()) {
  for(int i=0; i<=5; i++){
      data[rs.getRow()][i]=rs.getString(i+1);
  }
}

编辑

Object[][] data = {{"Kathy", "Smith", "Snowboarding", new Integer(5), new Boolean(false)}, 
            {"John", "Doe", "Rowing", new Integer(3), new Boolean(true)}};

这使您越来越多地定义属性的类型,因此我建议您创建一个新的类型,例如:

public class TypeObject {

    private String s1;
    private String s2;
    private String s3;
    private String i1;
    private boolean b1;

    public TypeObject(String s1, String s2, String s3, String i1, boolean b1) {
        this.s1 = s1;
        this.s2 = s2;
        this.s3 = s3;
        this.i1 = i1;
        this.b1 = b1;
    }

    //getters and setters
}

因此,使用 TypeObject[] 代替 Object[][],您可以轻松设置或获取属性,如下所示:

TypeObject[] data = new TypeObject[numberRow];
TypeObject d = new TypeObject(rs.getString("c1"), rs.getString("c2"), rs.getString("c3"), rs.getInt("c4"), rs.getBoolean("c5"));

data[i] = d;

所以这种方式的优点:

  • 您可以在表格中添加新列,因此您可以轻松添加新列 TypeObject 类中的字段
  • 您可以根据需要创建构造函数。

关于java - 将 JDBC 的结果集加载到二维表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42055795/

相关文章:

php - 如何在 PHP 中将数组转换为数字?

Javascript OOP 和数组

Javascript:创建一个深度克隆/扩展/复制功能,不会为 GC 产生任何垃圾

java - 将 JSON 转换为 CSV

java - 如何在 Java 中验证给定 (R,S) 对的 DSA 签名?

java - 将 XML 字符串转换为 JSON 对象时删除前面的 0

javascript - 如何创建一个具有html标签所有属性的对象?

java - java中的标识符到底是什么?

arrays - 如何在 Swift 对象数组中找到最大值?

python - 在 python 中不使用循环填充 3D 数组