public ResultSet executeQuery(String sql, Object...params){ //执行查询 try { conn = initConn(); pst = conn.prepareStatement(sql); if(params == null){ rs = pst.executeQuery(sql); }else { for(int i = 0; i<params.length; i++){ pst.setObject((i+1),params[i]); } rs = pst.executeQuery(); } } catch (SQLException e) { e.printStackTrace(); }finally { close(); } return rs; }
public class TestDB { public static void main(String[] args) { BaseDao b = new BaseDao(); Object[] o = {1}; try { ResultSet rs = b.executeQuery("SELECT * FROM player WHERE id=?;",o); if(rs.next()) { int i = rs.getInt("id"); System.out.println(i); } } catch (SQLException e) { e.printStackTrace(); } } }
在测试连接数据库查询的时候,rs.next()抛出了Operation not allowed after ResultSet closed 异常,
在结果集关闭之后 不可以使用该方法,但自己并没有调用rs.close(),
发生错误其实是因为在结果集处理完毕之前就关掉了conn。
解决方法:在处理完结果集的时候再关闭conn,关掉conn后处理结果集会发生此错误。