一般情况下,我们的项目中都有一个获取数据库连接的方法。

我获取数据库连接的方法是这样实现的:

1. 创建一个 ComboPooledDataSource对象,使用它的getConnection()方法获取连接。

2. 创建一个泛型为Connection的ThreadLocal<Connection>对象,用它的get()方法取出当前方法保存的数据库连接,用它的set(Connection conn)方法添加连接并返回。

具体代码:

private static ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>(); // 创建ThreadLocal对象
private static ComboPooledDataSource dataSourcedataSource = new ComboPooledDataSource(); // 创建数据源对象
/** *  * @Title:
getConnection * @author GNODIAD * @date 2014-11-6
上午10:54:33 * @Description: |--
获取数据库连接的方法 * @return 获取到的数据库连接 * @throws
SQLException 可能抛出的异常 * */
public static Connection getConnection() throws SQLException { /* *  1).
从ThreadLocal中取出当前线程保存的数据库连接 *  2).
如果没有数据库连接或者连接已经关闭,就创建一个数据库连接, *
并将数据库连接添加到ThreadLocal中并返回这个连接 *  3).
如果有数据库连接,直接返回数据库连接 */Connection conn =
threadLocal.get(); if (conn == null || conn.isClosed())
{// 【错误的产生就是这一句没有判断连接是否关闭】 conn =
dataSource.getConnection(); // 创建连接 threadLocal.set(conn);
// 添加连接到ThreadLocal中 } return conn; // 返回连接
}

问题就出在连接关闭后还没有重新获取就使用了。所以错误信息就提示你,你不能在一个已经关闭的连接上操作。

转载于:https://blog.51cto.com/gnodiad/1579792

c3p0数据库连接池使用报错【 You can't operate on a closed Connection!!!】解决方案相关推荐

  1. 【JDBC】使用c3p0数据库连接池的各种报错警告

    使用c3p0数据库连接池的各种报错警告 使用c3p0数据库连接池的时候,先导入了三个jar包在lib 文件夹中, c3p0-0.9.5.2.jar mchange-commons-java-0.2.3 ...

  2. Java数据库开发与应用之MySQL数据库、JDBC操作数据库、C3P0数据库连接池,Java反射等

    MySQL数据库,JDBC接口,MyBatis框架等,掌握的数据的存放和管理. Java数据库开发基础,介绍MySQL数据库.JDBC操作数据库.C3P0数据库连接池,Java反射等内容,进行油画商城 ...

  3. 数据库连接池及C3P0数据库连接池技术

    数据库连接池(重要) 注意数据库连接池只是简化获得数据库连接对象和关流的部门 1.数据库连接池: 1.概念: 其实就是一个容器(在Java中就是集合),存在数据库连接的容器,当系统初始化好后,容器被创 ...

  4. C3P0数据库连接池的配置

    在pom.xml文件中导入jar包 <dependency><groupId>com.mchange</groupId><artifactId>c3p0 ...

  5. C3P0连接池使用时报错java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector

    今天学习连接池的时候,导入了c3p0-0.9.5.2.jar,然后进行实例化使用 @Testpublic void test2() throws SQLException {ComboPooledDa ...

  6. c3p0 数据库连接池

    C3P0连接池 c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.c3p0一般是与Hibernate,Spring等框架一块使用的,当然也可以 ...

  7. git使用报错:fatal: Couldn't find remote ref master的解决方法

    git使用报错:fatal: Couldn't find remote ref master的解决方法 fatal: Couldn't find remote ref master 翻译过来就是:致命 ...

  8. 记录webpack使用问题,使用报错“UnhandledPromiseRejectionWarning,file-loader图片过大,无法加载图片,打包html文件报错TypeError

    记录webpack使用报错 版本号问题 运行npm run build,报错 "UnhandledPromiseRejectionWarning: TypeError: this.getRe ...

  9. [原创]java WEB学习笔记80:Hibernate学习之路--- hibernate配置文件:JDBC 连接属性,C3P0 数据库连接池属性等...

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

最新文章

  1. web编程速度大比拼(nodejs go python)(非专业对比)
  2. Cassandra——类似levelDB的基于p2p架构的分布式NOSQL数据库
  3. 定时器回调函数怎么写_ESP8266_04管脚控制与软件定时器
  4. java publickey_Java中RSAPublicKey在不同平台的差异性
  5. 推荐一个免费的在线图片工具网站
  6. 第4章 字符串和格式化输入/输出
  7. jQuery数据转换与提交
  8. 每天自动给自己发天气预报的脚本
  9. 从 JavaScript 到 TypeScript
  10. Java学习笔记13--比较器(Comparable、Comparator)
  11. [深度学习 - 实战项目] yoloV5人脸侦测arcFace人脸识别silentFace静态活体检测
  12. Day9-Python文本数据(DataWhale)
  13. 埃默里大学有计算机专业吗,埃默里大学计算机专业申请需要满足哪些条件?
  14. PEGASUS: Pre-training with Extracted Gap-sentences for Abstractive Summarization论文笔记
  15. PgMP学习感受分享
  16. 莫队算法二(树上莫队cot2,Haruna’s Breakfast)
  17. POX控制器的分析(二)
  18. pytest的mark功能
  19. 计算机共享网络热点,(传输)将win7计算机无线网络变成WiFi热点,使​​手机和笔记本电脑可以共享Internet...
  20. LIS系统源码 医院检验信息管理系统源码 (LIS) LIS源码

热门文章

  1. Intellij IDEA单元测试提示Test events were not received
  2. System commands can run from cmd
  3. Asp.net支持的最大上传文件大小
  4. 用“逐步排除”的方法定位Java服务线上“系统性”故障
  5. Windows客户端C/C++编程规范“建议”——表达式和运算
  6. Windows7上使用VS2013编译Caffe源码(不带GPU支持)步骤
  7. Git简介以及与SVN的区别
  8. a和a数值大小 计算机,Java求s=a+aa+aaa+aaaa+aa...a的值
  9. 学python去哪做项目_有哪些适合 Python 刚入门者去做的项目?
  10. SpringBoot复习:5(配置绑定)