Java语言之JDBC基础之DBCP数据源讲解
小标 2018-10-12 来源 : 阅读 1093 评论 0

摘要:本文主要向大家介绍了Java语言之JDBC基础之DBCP数据源讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了Java语言之JDBC基础之DBCP数据源讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。


 

在JDBC的基础上,我们发现来回的获得数据库连接返回数据库连接给书库会大大降低数据库的执行效率。所以我们可以采用使用连接池的方式来放置连接、获取连接。当我们需要数据库连接的时候,我们不在向数据库获取,而是从连接池中获得数据库的连接,用完连接之后也不再返回给数据库,而是直接返回给连接池。这样数据库的效率的到很大的提升。


常用的数据库连接池有两种:dbcp和c3p0。


①dbcp连接池


首先,我们需要将数据库需要的jar包导入,一个是commons-dbcp.jar、一个是commons-pool.jar.然后在工程下的src目录下导入需要使用的properties文件,该文件中保存了连接数据库需要的一些信息,该文件内容如下:



 


写好该文件后,编程些测试程序,JDBCUtil_dbcp.java


public class JDBCUtil_dbcp {


private static DataSource ds=null;


static{


try {


InputStream in = JDBCUtil_dbcp.class.getClassLoader().getResourceAsStream("db.properties");


Properties pt = new Properties();


pt.load(in);


//创建工厂


BasicDataSourceFactory db = new BasicDataSourceFactory();


ds = db.createDataSource(pt);


} catch (Exception e) {


throw new ExceptionInInitializerError(e);


return ds.getConnection();


}


public static void close(ResultSet rs,Statement stat,Connection conn){


if(rs!=null){


try {


rs.close();


} catch (Exception e) {


e.printStackTrace();


}


}


if(stat != null){


try {


stat.close();


} catch (Exception e) {


e.printStackTrace();


}


}


if(conn != null){


try {


conn.close();


} catch (Exception e) {


e.printStackTrace();


}


}


}


}


编写测试类,TransactionDemo3:


public class TransactionDemo3 {


@Test


public void TransactionDemo() throws SQLException{


Connection conn = null;


PreparedStatement stat = null;


ResultSet rs = null;


try{


conn =JDBCUtil_dbcp.getConnection();


System.out.println("Connection:"+conn.getClass().getName());


}finally{


JDBCUtil_dbcp.close(rs, stat, conn);


}


}


}


运行结果:Connection:org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper


②c3p0连接池


JDUCUtil_c3p0工具类:


package com.nyist.cn.Utils;


import java.io.InputStream;


import java.sql.Connection;


import java.sql.ResultSet;


import java.sql.SQLException;


import java.sql.Statement;


import com.mchange.v2.c3p0.ComboPooledDataSource;


public class JDBCUtil_c3p0 {


private static ComboPooledDataSource ds=null;


//设置一个静态代码块


static{


try {


ds = new ComboPooledDataSource(); //new 一个c3p0连接池


ds.setDriverClass("com.mysql.jdbc.Driver"); //设置需要的驱动


ds.setJdbcUrl("jdbc:mysql://localhost:3306/lhg"); //设置路径Url


ds.setUser("root"); //设置用户名


ds.setPassword("410923"); //设置密码


ds.setMaxPoolSize(30); //设置最大连接数


ds.setMinPoolSize(5); //设置最小连接数


ds.setInitialPoolSize(10); //设置初始化连接属


} catch (Exception e) {


throw new ExceptionInInitializerError(e);


}


}


public static Connection getConnection() throws SQLException{


return ds.getConnection();


}


public static void close(ResultSet rs,Statement stat,Connection conn){


if(rs!=null){


try {


rs.close();


} catch (Exception e) {


e.printStackTrace();


}


}


if(stat != null){


try {


stat.close();


} catch (Exception e) {


e.printStackTrace();


}


}


if(conn != null){


try {


conn.close();


} catch (Exception e) {


e.printStackTrace();


}


}


}


}


c3p0测试类:


package com.nyist.cn.Demo;


import java.sql.Connection;


import java.sql.SQLException;


import org.junit.Test;


import com.mysql.jdbc.PreparedStatement;


import com.mysql.jdbc.ResultSet;


import com.nyist.cn.Utils.JDBCUtil_c3p0;


public class TransactionDemo4 {


@Test


public void TransactionDemo() throws SQLException{


Connection conn = null;


PreparedStatement stat = null;


ResultSet rs = null;


try{


conn =JDBCUtil_c3p0.getConnection();


System.out.println("Connection_c3p0:"+conn.getClass().getName());


}finally{


JDBCUtil_c3p0.close(rs, stat, conn);


}


}


}


运行结果如下:


以上是比较常用的两种连接池,使用JDBC代码如何使用。希望能够帮助到大家。


          

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程