【问题标题】:Getting the error "java.sql.SQLException: After end of result set" when using ResultSet .getArray()使用 ResultSet .getArray() 时出现错误“java.sql.SQLException:结果集结束后”
【发布时间】:2020-09-09 17:43:12
【问题描述】:

我正在尝试使用 select distinct 查询从我的 SQL 数据库中获取一个表,然后将其放入一个数组中。但是,当我尝试将数组保存为变量时出现错误。

代码:

private ResultSet query(String query) throws SQLException {
    assert testConn();
    try {
        Statement statement = connection.createStatement();
        return statement.executeQuery(query);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    throw new SQLException();
}


private boolean testConn(){
    try {
        return connection.isValid(1);
    } catch (SQLException e){
        return false;
    }
}

@Test
void test_rs(){
    try {
        ResultSet rs = query("select distinct client_id from email_filtering_scores;");
        Array a = rs.getArray("client_id");
        String[] set = (String[])a.getArray();
        System.out.println(Arrays.deepToString(set));
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

我不知道为什么会抛出 SQLException,因此感谢您的帮助。

提前致谢。

附言。我不知道使用 jdbc 的最佳实践是什么,所以如果我的代码有什么令人震惊的地方,我会喜欢一些建议。

【问题讨论】:

  • 我最初尝试修复它是基于此回复here
  • client_id 的数据类型是什么?您也可以将Object 用于未知类型

标签: java mysql jdbc


【解决方案1】:

使用next()检查结果集是否有值

    if (rs.next()) {
        Array a = rs.getArray("client_id");
        String[] set = (String[]) a.getArray();
        System.out.println(Arrays.deepToString(set));
    }

【讨论】:

  • 这与我得到的答案相同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-06
  • 1970-01-01
  • 1970-01-01
  • 2011-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多