加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – JDBC连接/结果集/语句的最佳实践是什么

发布时间:2020-12-15 08:42:01 所属栏目:Java 来源:网络整理
导读:我想知道以下代码片段的最佳实践是什么,每次在每个’if’内完成executeQuery时我是否必须关闭所有stmt和rs,或者我现在可以这样做,在runOnSqlServer结束时关闭rs和stmt,并在结束时关闭连接方法?感谢您的任何指示! public void runOnSqlServer(Connection co
我想知道以下代码片段的最佳实践是什么,每次在每个’if’内完成executeQuery时我是否必须关闭所有stmt和rs,或者我现在可以这样做,在runOnSqlServer结束时关闭rs和stmt,并在结束时关闭连接方法?感谢您的任何指示!

public void runOnSqlServer(Connection con,String[] params,String db){
    try{
    Statement stmt = con.createStatement();
    ResultSet rs = null;
    if(isVer){
        rs = stmt.executeQuery(micro_verSql);
        commonAct(rs,getParameter("isVer"),1);
    } 
    if(isInfo){
        rs = stmt.executeQuery("SELECT DATABASEPROPERTYEX('"+db+"','COLLATION')");
        commonAct(rs,getParameter("isInfo"),1);
    }
    }catch(SQLException){
    .....
    }finally{
    stmt.close();
    rs.close();
    }
}

public void run(CommandContext ctx) {
    try{
        ...
        runOnSqlServer(con,params,sqldb);
        ...
    }catch(Exception ex){
    }finally{
         if (con != null) con.close();
    }
}

解决方法

恕我直言,您应该在方法完成后关闭语句和结果集(在最后),但每次重新使用它时关闭ResultSet也应该在完成连接时始终关闭连接.

编辑:重新初始化

ResultSet set = statement.executeQuery();
set = statement2.executeQuery();

您正在将ResultSet“set”设置为新的结果集.原始集合现在没有指向任何东西,但仍然等待收集.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读