C3P0在util包里C3P0ConnectionHelper类里代码实现

采用事务、c3p0连接池配置、DBUtiles中的QueryRunner结合 采用事务、c3p0连接池配置、DBUtiles中的QueryRunner结合作为mysql数据库的插入一条数据 立即下载
import java.sql.Connection;
import java.sql.SQLException;


import javax.sql.DataSource;


import com.mchange.v2.c3p0.ComboPooledDataSource;


public class C3POConnectionHelper {

  private static DataSource ds;
  private   static Connection  con =null;
 
  //在线程中创建Connection对象的副本
  private static ThreadLocal<Connection> t = new ThreadLocal<Connection>();
  
 static
 {
 ds = new ComboPooledDataSource();//会自动从src目录下找c3p0配置
 }
  
/**
* 获取连接对象
* @return
* @throws SQLException
*/
public static Connection getConnection() throws SQLException {
con = t.get();//得到一个线程变量的副本
if(con ==null){
con = ds.getConnection();
t.set(con);//创建一个线程变量的副本
}
return con;
}


/**
* 关闭连接对象的方法
* @throws SQLException
*/
public static void closeConnection() throws SQLException {
con = t.get();
if(con!=null){
con.close();
t.remove();
}

}
/**
* 对当前连接开启事务的方法(对数据进行增,删,改操作必须通过事务提交才会有效)
* @throws SQLException
*/
public static void startTransaction() throws SQLException{
con=t.get();
if(con==null){
con=ds.getConnection();
t.set(con);
}
con.setAutoCommit(false);//开启连接
}
/**
* 对当前连接对象的事务提交
* @throws SQLException
*/
public static void commitTransaction() throws SQLException{
con=t.get();
if(con==null){
con=ds.getConnection();
t.set(con);
}
con.commit();//事务提交
}




  
}
c3p0-0.9.2.1.jar包 将c3p0-0.9.2.1.jar导入到工程中放jar包的文件夹中,然后右键添加到工程的库里面(右键Build Path -> Add ....)就可以在配置文件中使用c3p0了。 立即下载

相关推荐

JAVA调用存储过程

注意,以下使用数据库为sql2000,驱动jtds1.2.2 一、调用存储过程(无结果集返回) Connection connection = ConnectionHelper.getConnection(); CallableStatement callableStatement = connection.prepareCall("{ call procedureName(?,?) }"); callableStatement.setString(1, "xxxxxxxx"); callableStatement.setString(2, "xxxxxxxx"); callableStatement.execute(); //获得sql的消息并输出,这个估计很多人都需要 SQLWarning sqlWarning = callableStatement.getWarnings(); while (sqlWarning != null) { System.out.println("sqlWarning.getErrorCode() = " + sqlWarning.getErrorCode()); System.out.println("sqlWarning.getSQLState() = " + sqlWarning.getSQLState()); System.out.println("sqlWarning.getMessage() = " + sqlWarning.getMessage()); sqlWarning = sqlWarning.getNextWarning(); } //close ConnectionHelper.closeConnection(callableStatement, connection); 二、调用存储过程,返回sql类型数据(非记录集) Connection connection = ConnectionHelper.getConnection(); CallableStatement callableStatement = connection.prepareCall("{ call procedureName(?,?,?) }"); callableStatement.setString(1, "xxxxxxxx"); callableStatement.setString(2, "xxxxxxxx"); //重点是这句1 callableStatement.registerOutParameter(3, Types.INTEGER); callableStatement.execute(); //取返回结果,重点是这句2 //int rsCount = callableStatement.getInt(3); //close ConnectionHelper.closeConnection(callableStatement, connection); 三、重点来了,返回记录集,多记录集 注意,不需要注册返回结果参数,只需要在sql中select出结果即可 例如:select * from tableName 即可得到返回结果 Connection connection = ConnectionHelper.getConnection(); CallableStatement callableStatement = connection.prepareCall("{ call procedureName(?) }"); //此处参数与结果集返回没有关系 callableStatement.setString(1, "xxxxxxxx"); callableStatement.execute(); ResultSet resultSet = callableStatement.getResultSet(); //以上两个语句,可以使用ResultSet resultSet = callableStatement.executeQuery();替代 //多结果返回 ResultSet resultSet2; if (callableStatement.getMoreResults()) { resultSet2 = callableStatement.getResultSet(); while (resultSet2.next()) { } } //close ConnectionHelper.closeConnection(callableStatement, connection); 提示:多结果返回可以使用如下代码(以上主要让大家明白,单一结果和多结果的区别): Boolean hasMoreResult = true; while (hasMoreResult) { ResultSet resultSet = callableStatement.getResultSet(); while (resultSet.next()) { } hasMoreResult = callableStatement.getMoreResults(); }

C3P0多数据源的死锁问题

最近在写的数据迁移工具快完成了,今天集成起来测试,发现一个问题,就是配置了多个数据源的C3P0在同时获取不同数据源时会死锁。 1.运行如下的代码,用JProfiler测试,会发现死锁的情况: 代码: package com.highgo.test.c3p0deadlock; import java.sql.SQLException; import com.mchange.v2.c3p0.

来啊 快活啊 4851

PADS VX2.7学习记录06-PADS Router软件功能操作

PADS VX2.7学习记录06-PADS Router软件功能操作

qq_31444421的博客 7863

另类解决c3p0连接池获取连接时候长时间阻塞线程问题

一直维护着旧游戏服务器 java写的,一台服务器还有3,4千人在线,看来老外还蛮怀旧的。 服务器出现无法登录时候,在服务器JDB 记录下多线程调用堆栈记录 以下是出现次数最多堆栈 [1] com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource (BasicResourcePool.java:201) [2] com.mch...

weixin_30950607的博客 632

mos管结电容等效模型_MOS管的防冲击防反接电路

MOS管的反接和抑制冲击一:原理分析MOS管由于生产工艺等因素,会产生相应的寄生电容,体二极管等。Mos管的寄生电容如图1所示,可以看到其具有三个寄生电容:G和S的电容Cgs;G和D的电容:Cgd,也称为反向传输电容、米勒电容、Crss;D和S的电容Cds。D和S之间的体二极管D1.图 1:MOS管等效模型寄生电容的数值可以从元器件的datasheet中得到,如图2,图3:Ciss(输入电容)=C...

weixin_29179583的博客 1859

3步搞定专利数据爬取:用Selenium绕过国家知识产权局反爬(附完整代码)

本文详细介绍了3种高效获取专利数据的技术方案,重点解析了使用Selenium绕过国家知识产权局反爬的实战方法,并提供了完整代码示例。文章还探讨了Requests+lxml轻量级方案和混合技术策略,帮助开发者根据需求选择最佳数据爬取方案,特别适合需要专利统计数据的开发者参考。

weixin_29029995的博客 1112

C3P0Utils工具类的使用

准备工作:使用c3p0需要用到的jar包有: c3p0-0.9.1.2.jar commons-logging-1.2.jar mchange-commons-java-0.2.20.jar mysql-connector-java-5.1.7-bin.jar //以下jar包是在使用JdbcTemplate模板时需要 spring-beans-5.2.6.RELEASE.jar spring-core-5.2.6.RELEASE.jar spring-jdbc-5.2.6.RELEASE.jar spr

爱思考的小伙 2057

CLASSB类移植(满足IEC 60730-1和60355-1标准)

针对软件认证需要满足IEC 60730-1和60335-1标准,ST公司专门提供的软件扩展包X-CUBE-CLASSB,它包含自测库和文档,支持多种STM32系列芯片,通过预集成测试库和标准化流程,帮助开发者快速满足国际安全标准,适用于家电、工业控制等高可靠性场景。ClassB软件包程序检测内容分为两个主要部分:启动时的自检和运行时的周期自检,MCU在上电的时候会进行复位启动,在启动完成以后会进行运行自检。

m0_61973119的博客 1402

RabbitMQ (八) 队列的参数详解

代码中,我们通常这样声明一个队列: //声明队列 channel.QueueDeclare ( queue: QueueName, //队列名称 durable: fal...

weixin_30247781的博客 1045

78.在 Vue3 中使用 OpenLayers 实现地图地点搜索定位功能

本文详细介绍了如何在 Vue3 中集成 OpenLayers,实现地图地点搜索和定位功能。Vue3 项目环境的搭建与依赖安装。使用语法实现地图初始化和控件集成。通过 OpenLayers 的 Popup 和 Geocoder 插件,实现地址搜索和定位。希望这篇博文能帮助你快速掌握 Vue3 与 OpenLayers 的集成技术。如果在使用过程中遇到问题,欢迎在评论区留言讨论,或者参考 OpenLayers 官方文档获得更多帮助。注意。

小彭的博客 1854

微信公众号 - 超详细 H5 网页接入微信支付功能,开发网站微信支付最详细的教程示例代码(微信公众号前端支付 JS-SDK / JSAPI 微信H5授权登录支付,唤起微信支付)最新超级详细教程

H5页面接入微信支付功能,前端网页端怎么做微信JSAPI支付,vue网站接入微信JSSDK支付,vueH5项目如何做使用微信支付,端h5调用微信支付jsapi方法,前端vue开发的H5网站怎么微信支付最详细的教程示例代码,vue怎么调取微信支付流程,将H5接入微信支付退款,vue网站怎么搞微信支付,H5前端开发网站在微信环境内H5调起微信支付,react项目h5如何调用微信支付的方法,nuxt.js项目vueH5集成微信JS支付,网站怎么做出H5微信公众号支付,请问vue.js这个框

🏆 前端领域优质创作者 8126

利用Applet请求服务

[code="java"]public class ConnectionHelper { private HttpURLConnection conn; ConnectionHelper(String urlStr) throws IOException { URL serverUrl = new URL(urlStr); // open Socket connecti...

来杯咖啡,随便聊聊。 460

“快速掌握Vivado FPGA开发流程“——详解Vivado开发流程及实例

快速掌握Vivado FPGA开发流程”——详解Vivado开发流程及实例FPGA技术在现代电子领域中应用越来越广泛,而Vivado作为业界最流行的FPGA设计工具之一,也受到越来越多人的关注和使用。那么如何快速掌握Vivado FPGA开发流程呢?本文将详细介绍Vivado开发流程,并通过实例来加深您的理解。首先,我们需要了解Vivado开发流程的主要步骤:创建工程、设计电路、约束电路、生成比特流。接下来,让我们一步步了解这些步骤。

2301_78484069的博客 733

详解C3P0(数据库连接池)

一、基本定义   C3P0是一个开源的JDBC连接池,它实现了数据源与JNDI绑定,支持JDBC3规范和实现了JDBC2的标准扩展说明的Connection和Statement池的DataSources对象。   即将用于连接数据库的连接整合在一起形成一个随取随用的数据库连接池(Connection pool)。 二、使用C3P0(数据库连接池)的必要性   当我们在进行基于数据库的web程序开发时,我们可以先在主程序(如Servlet、Bean)中通过JDBC中的DriverManage.

u010697501的专栏 7066

【Nginx学习】5步揭秘Nginx邮件代理模块:邮件代理服务器的功能与实现

Nginx的邮件代理模块(Mail Proxy Module)允许Nginx作为邮件代理服务器,支持SMTP、POP3和IMAP协议。这使得Nginx可以作为一个高性能的邮件网关,用于过滤垃圾邮件、病毒扫描、负载均衡等任务。简单来说,Nginx在这里就像是一个邮递员,负责将邮件从发件人手中安全、快速地送到收件人手中。通过上述的解析,我们可以看到Nginx在邮件代理模块中的设计和实现。从配置解析、连接处理,到协议处理、SSL/TLS加密和日志记录,每一步都至关重要。

java专栏 1314

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IOS推送消息(java实现)

package com.yanan.push; import javapns.back.PushNotificationManager; import javapns.back.SSLConnectionHelper; import javapns.data.Device; import javapns.data.PayLoad; public class PushTes

zo_184的专栏 654

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

spring框架源码三、自定义aop实现事务控制

用工厂类生成BankAccountService的动态代理,BankAccountController调用BankAccountService的动态代理对象,在代理对象中增强横切逻辑。

CaptainCats的博客 934

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

c3p0 应用遇到有联系的实体对象时dao.imp的写法-----like:发帖(与用户关联)

查询单个对象和集合: public PostInfo getMolde(Object objId) throws SQLException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { PostI

Future_IT_Daniel的博客 618

C3P0连接池的三种实现方式

用到的jar包:                  mysql-connector-java-5.1.30-bin.jar                  c3p0-0.9.5.2.jar                  mchange-commons-java-0.2.11.jar 直接设置参数: C3P0Inner.java  package com.song.c3p0

Kopite 2万+

IOS 基于APNS消息推送原理与实现(JAVA后台)

Push的原理: Push 的工作机制可以简单的概括为下图 图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider。 APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,是苹果的服务器。 上图可以分为三个阶段。 第一阶段:Push服务器应用程序把要发送的消息、

Java Dynamic的专栏 7210

c3p0获取连接Connection后的Close()---释疑

论题: java c3p0获取连接Connnection 之后, 调用 con.close( ) 是否真的关闭了物理连接 ? 简答: c3p0采用连接池, 目的就是提前预置一定数量的连接, 在使用时候重复利用这些连接, 所以, con.close() 之后, 物理连接当然是被放回了连接池, 而没有真正的关闭 . c3p0中的池连接(指:Connection) 是实现了...

weixin_30851867的博客 728

C3P0 连接池获取的connection执行close() 方法是销毁连接还是释放资源归还连接至连接池?

C3P0 连接池获取的connection执行close() 方法是释放资源销毁连接还是释放资源归还连接至连接池? 如果你只是想要一个答案的话,可以很明确的说: 连接池的连接对象在执行clos()方法之后, 是将资源释放出来但连接不被销毁,而是重新回到C3P0 连接池中以重复使用。 代码演示如下: ## 一:C3P0 的硬编码方式演示 package com.Demo_c3p0使用_硬编码; import com.mchange.v2.c3p0.ComboPooledDataSource; import

weixin_44766368的博客 1660

数据库连接池C3P0学习

数据库连接池C3P0框架是个非常优异的开源jar,高性能的管理着数据源,这里只讨论程序本身负责数据源,不讨论容器管理。   一、实现方式: C3P0有三种方式实现: 1.自己动手写代码,实现数据源 例如:在类路径下配置一个属性文件,config.properties,内容如下: driverClass=xxx jdbcUrl=xxx user=xxx password=xxx ...

conge 911

02_c3p0之c3p0-config.xml配置案例,操作c3p0的jdbcUtil工具类的编写

 c3p0也是一个开源jdbc连接池,我们熟悉的Hibernate和Spring框架使用的都是该数据源。   这里获得数据源使用的方法是:ComboPooledDataSource 它提供的构造方法有: ComboPooledDataSource()             ComboPooledData

涂作权的博客 4221

从JSP页面里传数据到SpringMVC中的Controller处理

a.直接读取表单的数据。在控制器里的方法里,按照这种格式写。 @RequestMapping(value="/login.action") public void login(HttpServletRequest req,HttpServletResponse resp){ req.setCharacterEncoding("utf-8");//设置参数的编码格式 String use

java9426的博客 1万+

myBatis-Spring-mvc里关于扫描service

第一步:在applicationContext.xml里的配置如下<beans xmlns="http://www.springframework.org/schema/beans" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/sch

java9426的博客 2383
上一篇: c3p0
下一篇: ajax页面局部刷新
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值