数据库连接JDBC和数据库连接池C3P0自定义的java封装类

使用以下的包装类都需要自己有JDBC的驱动jar包:

如 mysql-connector-java-5.1.26-bin.jar(5.1.26代表的是版本序列号)

一、JDBC的封装:(java连接MySQL)

 import java.sql.*;

 import utils.GlobalConstant;

 public class JDBCUtil {

     private JDBCUtil() {

     }

     /**
* 获取JDBC的数据库连接
*/
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName(GlobalConstant.CONNECTION_DRIVER);
conn = DriverManager.getConnection(GlobalConstant.CONNECTION_URL, GlobalConstant.CONNECTION_USER,
GlobalConstant.CONNECTION_PASSWORD);
} catch (Exception e) {
e.printStackTrace();
}
/*
* try { conn = DataSourceService.getConnection(); } catch (SQLException
* e) { e.printStackTrace(); }
*/
return conn;
} private static void close(ResultSet rs, Statement sm, Connection conn) {
try {
if (rs != null)
rs.close();
if (sm != null)
sm.close();
if (conn != null)
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 关闭数据库的结果集
*
* @param rs
* 需要关闭的结果集
*/
public static void close(ResultSet rs) {
try {
if (rs != null)
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 将一个标准的sql查询语句在数据库中查询,并且返回一个对应的结果集。
*
* @param sql
* 标准的sql查询语句
*/
public static ResultSet doQuery(String sql) {
Connection conn = getConnection();
if (conn == null)
return null;
Statement sm = null;
ResultSet rs = null;
try {
sm = conn.createStatement();
rs = sm.executeQuery(sql);
return rs;
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (rs == null && sm != null) {
close(null, sm, conn);
}
// close(null, sm, conn);这句肯定不行
}
return rs;
} /**
* 将一个更新语句和对应的参数进行查询,并返回一个整形结果
*
* @param sql
* 数据库中的更新语句
* @param paras
* sql中对应的参数
*/
public static int doUpdate(String sql, String[] paras) {
Connection conn = getConnection();
if (conn == null)
return 0;
PreparedStatement psm = null;
int result = 0;
try {
psm = conn.prepareStatement(sql);
for (int i = 0; i < paras.length; i++) {
psm.setString(i + 1, paras[i]);
}
result = psm.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
close(null, psm, conn);
}
return result;
}
}

JDBCUtils

以下的C3P0的数据库连接池除了需要以上的JDBC的驱动包,还需以下jar包:

如 c3p0-0.9.1.2.jar (0.9.1.2代表的是版本序列号)

为了方便使用,可以用其他的jar包进行辅助封装(dbUtils的jar)

如 commons-dbutils-1.3.jar (1.3代表的是版本序列号)

二、C3P0数据库连接池的封装:(java连接MySQL)

----------------不需要xml的配置文件

 import java.beans.PropertyVetoException;
import java.sql.Connection;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource; import utils.GlobalConstant; public class DataSourceUtils {
private static DataSource ds; static {
/*
* 从配置文件读取配置信息 <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <!--
* 默认配置,如果没有指定则使用这个配置 --> <default-config> <property
* name="checkoutTimeout">30000</property> <property
* name="idleConnectionTestPeriod">30</property> <property
* name="initialPoolSize">3</property> <property
* name="maxIdleTime">30</property> <property
* name="maxPoolSize">10</property> <property
* name="minPoolSize">3</property> <property
* name="maxStatements">50</property> <property
* name="acquireIncrement">3</property><!-- 如果池中数据连接不够时一次增长多少个 -->
* <property name="driverClass">com.mysql.jdbc.Driver</property>
* <property name="jdbcUrl">
* <![CDATA[jdbc:mysql://127.0.0.1:3306/project?useUnicode=true&
* characterEncoding=UTF-8]]> </property> <property
* name="user">root</property> <property
* name="password">789123</property> </default-config> </c3p0-config>
*
* ds = // 默认的读取c3p0-config.xml中默认配置 new ComboPooledDataSource();
*/
ComboPooledDataSource cpds = null;
try {
cpds = new ComboPooledDataSource();
cpds.setCheckoutTimeout(30000);
cpds.setIdleConnectionTestPeriod(30);
cpds.setInitialPoolSize(3);
cpds.setMaxIdleTime(30);
cpds.setMaxPoolSize(70);
cpds.setMaxStatementsPerConnection(100);
cpds.setMinPoolSize(3);
cpds.setMaxStatements(75);
cpds.setAcquireIncrement(3);
cpds.setDriverClass(GlobalConstant.CONNECTION_DRIVER);
cpds.setJdbcUrl(GlobalConstant.CONNECTION_URL);
cpds.setUser(GlobalConstant.CONNECTION_USER);
cpds.setPassword(GlobalConstant.CONNECTION_PASSWORD);
ds = cpds;
} catch (PropertyVetoException e) {
System.out.println("与MySQL数据库连接失败!");
}
} private DataSourceUtils() { } public static DataSource getDatasSource() {
return ds;
} public static Connection getConnection() {
Connection con = null;
try {
con = ds.getConnection();// 每一次从ds中获取一个新的连接
} catch (Exception e) {
e.printStackTrace();
}
return con;
}
}

DataSourceUtils

如果要验证其可用性,你们可以修改下以上的用户名,密码,数据库名

之后在自己的MySQL建立自己相应的数据库即可测试。

数据库连接JDBC和数据库连接池C3P0自定义的java封装类的更多相关文章

  1. JDBC数据源连接池(4)---自定义数据源连接池

    [续上文<JDBC数据源连接池(3)---Tomcat集成DBCP>] 我们已经 了解了DBCP,C3P0,以及Tomcat内置的数据源连接池,那么,这些数据源连接池是如何实现的呢?为了究 ...

  2. 数据库连接池c3p0和dbcp

    现在常用的开源数据连接池主要有c3p0.dbcp和proxool三种,其中: hibernate开发组推荐使用c3p0; spring开发组推荐使用dbcp(dbcp连接池有weblogic连接池同样 ...

  3. Java -- JDBC 学习--数据库连接池

    JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet.beans)中建立数据库连接. 进行sql操作 断开数据库连接. 这种模式开 ...

  4. JDBC和数据库连接池

    JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成. ​ ● JDBC ​ ● C3P0 ​ ● DRUID 一.JDBC ...

  5. 数据库连接池——C3P0&Druid(快速入门)

    数据库连接池--C3P0&Druid (一) 数据库连接池 每一个事物都有其存在的意义,在初学jdbc的时候,我们建立数据库连接对象后,会对其进行释放,但是数据库连接的建立和关闭是非常消耗资源 ...

  6. 基于JDBC的数据库连接池技术研究与应用

    引言 近年来,随着Internet/Intranet建网技术的飞速发展和在世界范围内的迅速普及,计算机 应用程序已从传统的桌面应用转到Web应用.基于B/S(Browser/Server)架构的3层开 ...

  7. 数据库连接池 c3p0 druid

    druid 数据库连接池 c3p0 使用C3P0数据源时需要依赖 mchange-commons-java-0.2.3.4.jar包.缺少该jar包则会报错!

  8. c3p0、dbcp、tomcat jdbc pool 连接池配置简介及常用数据库的driverClass和驱动包

    [-] DBCP连接池配置 dbcp jar包 c3p0连接池配置 c3p0 jar包 jdbc-pool连接池配置 jdbc-pool jar包 常用数据库的driverClass和jdbcUrl ...

  9. Java数据库连接--JDBC调用存储过程,事务管理和高级应用

    相关链接:Jdbc调用存储过程 一.JDBC常用的API深入详解及存储过程的调用 1.存储过程的介绍 我们常用的操作数据库语言SQL语句在执行的时候要先进行编译,然后执行,而存储过程是在大型数据库系统 ...

随机推荐

  1. [Scrapy] Mac安装Scrapy

    Mac安装Scrapy Mac版本 10.11 El Captain. 前一段想在Mac上用Scrapy,各种问题.有一个不错的工具:Anaconda. 安装Anaconda 下载地址 我还是下pyt ...

  2. C# 从CIL代码了解委托,匿名方法,Lambda 表达式和闭包本质

    前言 C# 3.0 引入了 Lambda 表达式,程序员们很快就开始习惯并爱上这种简洁并极具表达力的函数式编程特性. 本着知其然,还要知其所以然的学习态度,笔者不禁想到了几个问题. (1)匿名函数(匿 ...

  3. HMI开发与控件

    =>控件是什么概念? 百度曰,控件是对数据和方法的封装.控件可以有自己的属性和方法.属性是控件数据的简单访问者. 对于HMI开发来说,使用控件可以快速获取到用户的交互(包括按下.释放.点击.拖动 ...

  4. TCP/IP知识点汇总

    1.HUB.Switch.Router在OSI模型中分别是第几层设备,各层的名称是什么? 2.TCP/IP 协议栈及 OSI 参考模型详解

  5. MFC编程入门之十六(对话框:消息对话框)

    前面几节讲了属性页对话框,我们可以根据所讲内容方便的建立自己的属性页对话框.本节讲解Windows系统中最常用最简单的一类对话框--消息对话框. 我们在使用Windows系统的过程中经常会见到消息对话 ...

  6. JQuery Datatables Dom 和 Language 参数详细说明

    http://linleizi.iteye.com/blog/2086435 *********************************** Data Tables: http://datat ...

  7. 防止SVN冲突,Elipse资源同步介绍

    灰色向右箭头: 本地修改了 灰色向右箭头且中间有白色减号: 本地删除了,服务器未删除 灰色向右且中间有个加号的箭头:本地比SVN上多出的文件 蓝色向左箭头:svn上修改过 蓝色向左且中间有个加号的箭头 ...

  8. 用hasOwnProperty获取对象自身的属性排除原型链

    今天遇到一个多层级的object. 需要判定每一层级的data下是否有title属性.在下图中展开的data自身其实是没有title的,但由于受到原型链__proto__的影响,在获取parent.d ...

  9. 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性

    Java并发编程实践 目录 并发编程 01—— ThreadLocal 并发编程 02—— ConcurrentHashMap 并发编程 03—— 阻塞队列和生产者-消费者模式 并发编程 04—— 闭 ...

  10. table表格中实现tbody部分可滚动,且thead部分固定

    1.想要实现表格的thead部分固定切tbody部分可滚动,就需要将thead与tbody进行分离,具体做法是 1.设置thead,tbody都为display:block: 2.设置th与td的宽度 ...