java 断开从连接池中获取的连接,规范的操作是怎样的

问题描述

java断开从连接池中获取的连接,规范的操作是怎样的,ResultSet,PreparedStatement,Connection是否需要依次关闭,若需要,应该怎么做才是高效率,规范,而且不会发生内存泄露。涉及到很多try和catch,不知怎么处理。

解决方案

解决方案二:
ResultSet,PreparedStatement,Connection是否需要依次关闭需要应该怎么做才是高效率写一个函数用来关闭,如放在的帮助类JdbcUtil里,如publicstaticvoidreleaseJdbcResource(ResultSetrs,Statementstmt,Connectionconn)throwsSQLException{try{if(rs!=null){rs.close();}}finally{try{if(stmt!=null){stmt.close();}}finally{if(conn!=null){conn.close();}}}}

调用步骤Connectionconn=yourDataSource.getConnection();//TODO访问数据库:CRUDJdbcUtil.releaseJdbcResource(rs,stmt,conn);
解决方案三:
一楼的哥好快啊,不过你写的关闭的函数中最好还是catch一下,如果真的关不了也知道出了问题
解决方案四:
引用1楼Inhibitory的回复:

ResultSet,PreparedStatement,Connection是否需要依次关闭需要应该怎么做才是高效率写一个函数用来关闭,如放在的帮助类JdbcUtil里,如publicstaticvoidreleaseJdbcResource(ResultSetrs,Statementstmt,Connectionconn)throwsSQLException{try{if(rs!=null){rs.close();}}finally{try{if(stmt!=null){stmt.close();}}finally{if(conn!=null){conn.close();}}}}

调用步骤Connectionconn=yourDataSource.getConnection();//TODO访问数据库:CRUDJdbcUtil.releaseJdbcResource(rs,stmt,conn);

还有个问题:我如果使用RowSet(RowSet做返回参数传递到了别的类里面)需要怎么做,我是查询得到数据后马上释放Connection(此时应该close哪些?),RowSet应该什么时候close?
解决方案五:
还有个问题:我如果使用RowSet(RowSet做返回参数传递到了别的类里面)需要怎么做,我是查询得到数据后马上释放Connection(此时应该close哪些?),RowSet应该什么时候close?一定要按ResultSet,Statement,Connection这个顺序close,否则会出错。

时间: 2024-10-03 23:44:43

java 断开从连接池中获取的连接,规范的操作是怎样的的相关文章

c3p0连接池中获取的Connection对象的close()方法是真的把连接给关闭了?

问题描述 c3p0连接池中获取的Connection对象的close()方法是真的把连接给关闭了? 自己做写了一个管理数据源的DBManager,构想中从数据源里面获取的Connection使用完之后执行close()方法,然后把Connection对象闲置回连接池中. 但是测试出来的结果好像每次执行close()之后connection就销毁了. 代码如下: DBManager.java package ben.DBUtils; import java.sql.Connection; impo

System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。

问题描述 如标题,System.InvalidOperationException:超时时间已到.超时时间已到,但是尚未从池中获取连接.出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小.这个要怎么解决?? 解决方案 解决方案二:高手们,帮帮小妹喽--解决方案三:及时关闭连接,在连接字符串增加maxploor数量.解决方案四:这个要怎么弄?我用vs2005打包后,登录我程序的时候就会提示这个错误,需要怎么来处理?

问题"超时时间已到。在从池中获取连接之前超时时间已过。"

问题描述 在代码里,我已经把数据库连接都关了(con.Dispose();和con.Close();),为什么还出现"超时时间已到.在从池中获取连接之前超时时间已过.出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小."呢?同时我还在数据库访问里引用了SqlHelper,会不会就是这个问题呢?有哪位弟兄能帮忙解决解决?网络上我也查到了相关问题,但不知道怎么去解决:http://blog.joycode.com/ghj/archive/2004/06/15/24612.aspx请各位弟兄

C3p0连接可以设定最大连接数么?连接池中最多可以存在的连接个数?

问题描述 C3p0连接可以设定最大连接数:连接池中最多可以存在的连接个数?如果没有这个参数,连接太多的话,数据库岂不承受不了. 问题补充:caizi12 写道 解决方案 不是空闲的,是指整个连接池总共的连接数,至于连接是使用还是空闲,是C3P0在使用时自己去管理的如果请求连接数超出了连接池数量的话,需要等待有连接从使用返回空闲状态才能继续分配但是有一个问题是lz需要考虑的:1. 使用连接池需要有良好的上层构架,要保证对数据库连接的使用被限制在最小范围,一旦连接使用完毕要及时而快速的归还给连接池2

java的连接池,关于C3P0连接的问题,

问题描述 连接池创建是报错连接池创建-JNDI初始化失败!JNDI如何配置,配置文件应该怎么写,怎么配置?请指教,不甚感激 解决方案 解决方案二:配置一个资源文件:db.properties;内容url=jdbc:mysql://localhost:3306/qhitcrm?useUnicode=true&characterEncoding=gbkuser=rootpassword=rootdriver=org.gjt.mm.mysql.Driver:连接数据库:packagecrm.java.

连接池-spring获取数据源dataSource为空null

问题描述 spring获取数据源dataSource为空null 因为配置文件中有链接太多,帖子发不上来,现在粘贴地址,请各位帮帮忙,谢谢了! http://www.iteye.com/problems/101084

连接池-c3p0怎么可以连接多个数据库?

问题描述 c3p0怎么可以连接多个数据库? 我的项目用c3p0连接数据库直接用Session session = HibernateSessionFactory.currentSession(); public class HibernateSessionFactory{ private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml"; private static final ThreadLocal threadLo

jQuery中获取checkbox选中项等操作及注意事项_jquery

1. 获取checkbox的选中项 2. checkbox选项的全选 反选操作 用于测试的checkbox代码段: 复制代码 代码如下: <div>            <input type="checkbox" name="abc" value="一年级" id="in1" checked="checked" /><label for="in1">

实例:JSP中获取客户端的浏览器和操作系统信息

js|客户端|浏览器 string agent = request.getheader("user-agent"); stringtokenizer st = new stringtokenizer(agent,";"); st.nexttoken(); //得到用户的浏览器名 string userbrowser = st.nexttoken(); //得到用户的操作系统名 string useros = st.nexttoken(); 取得本机的信息也可以这样: