quietfarmer 2015-10-17 09:05 采纳率: 66.7%
浏览 2399
已采纳

mysql的JDBC封装类如何释放资源?

在这个类中返回出一个Resultset结果,然后在另一个类中循环出来,有什么办法可以在这个类中直接释放资源?如果直接在后面加finally{...}会报错,初学求解

public ResultSet SQL_ExecuteQuery(String sql,Object [] p)
{
Connection con=openConnection();//打开数据库
PreparedStatement pst=null;//定义一个 执行对象
ResultSet rst=null;
try {
pst=con.prepareStatement(sql);//初始化执行对象
//循环设置参数
if(p!=null && p.length>0)
{
for (int i = 0; i < p.length; i++) {
pst.setObject((i+1), p[i]);//设置参数
}
}
rst=pst.executeQuery();
//最后执行命令 并返回结果
return rst;//执行命令
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

            return null;
        }
  • 写回答

1条回答 默认 最新

  • 毕小宝 博客专家认证 2015-10-17 09:12
    关注

    每个资源类都有提供close方法,需要在finally中调用close()方法,保证JdbC连接使用完成后资源一定会被释放。
    上述代码添加关闭代码,参考:

     public ResultSet SQL_ExecuteQuery(String sql,Object [] p)
    {
    Connection con=openConnection();//打开数据库
    PreparedStatement pst=null;//定义一个 执行对象 
    ResultSet rst=null;
    try {
    pst=con.prepareStatement(sql);//初始化执行对象
    //循环设置参数
    if(p!=null && p.length>0)
    {
    for (int i = 0; i < p.length; i++) {
    pst.setObject((i+1), p[i]);//设置参数
    }
    }
    rst=pst.executeQuery();
    //最后执行命令 并返回结果
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
       pst.close();
       con.close();
    }
               return rst;//执行命令 
            }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型