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

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

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

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

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

  1 import java.sql.*;
  2
  3 import utils.GlobalConstant;
  4
  5 public class JDBCUtil {
  6
  7     private JDBCUtil() {
  8
  9     }
 10
 11     /**
 12      * 获取JDBC的数据库连接
 13      */
 14     public static Connection getConnection() {
 15         Connection conn = null;
 16         try {
 17             Class.forName(GlobalConstant.CONNECTION_DRIVER);
 18             conn = DriverManager.getConnection(GlobalConstant.CONNECTION_URL, GlobalConstant.CONNECTION_USER,
 19                     GlobalConstant.CONNECTION_PASSWORD);
 20         } catch (Exception e) {
 21             e.printStackTrace();
 22         }
 23         /*
 24          * try { conn = DataSourceService.getConnection(); } catch (SQLException
 25          * e) { e.printStackTrace(); }
 26          */
 27         return conn;
 28     }
 29
 30     private static void close(ResultSet rs, Statement sm, Connection conn) {
 31         try {
 32             if (rs != null)
 33                 rs.close();
 34             if (sm != null)
 35                 sm.close();
 36             if (conn != null)
 37                 conn.close();
 38         } catch (Exception e) {
 39             e.printStackTrace();
 40         }
 41     }
 42
 43     /**
 44      * 关闭数据库的结果集
 45      *
 46      * @param rs
 47      *            需要关闭的结果集
 48      */
 49     public static void close(ResultSet rs) {
 50         try {
 51             if (rs != null)
 52                 rs.close();
 53         } catch (Exception e) {
 54             e.printStackTrace();
 55         }
 56     }
 57
 58     /**
 59      * 将一个标准的sql查询语句在数据库中查询,并且返回一个对应的结果集。
 60      *
 61      * @param sql
 62      *            标准的sql查询语句
 63      */
 64     public static ResultSet doQuery(String sql) {
 65         Connection conn = getConnection();
 66         if (conn == null)
 67             return null;
 68         Statement sm = null;
 69         ResultSet rs = null;
 70         try {
 71             sm = conn.createStatement();
 72             rs = sm.executeQuery(sql);
 73             return rs;
 74         } catch (SQLException e) {
 75             e.printStackTrace();
 76         } finally {
 77             if (rs == null && sm != null) {
 78                 close(null, sm, conn);
 79             }
 80             // close(null, sm, conn);这句肯定不行
 81         }
 82         return rs;
 83     }
 84
 85     /**
 86      * 将一个更新语句和对应的参数进行查询,并返回一个整形结果
 87      *
 88      * @param sql
 89      *            数据库中的更新语句
 90      * @param paras
 91      *            sql中对应的参数
 92      */
 93     public static int doUpdate(String sql, String[] paras) {
 94         Connection conn = getConnection();
 95         if (conn == null)
 96             return 0;
 97         PreparedStatement psm = null;
 98         int result = 0;
 99         try {
100             psm = conn.prepareStatement(sql);
101             for (int i = 0; i < paras.length; i++) {
102                 psm.setString(i + 1, paras[i]);
103             }
104             result = psm.executeUpdate();
105         } catch (Exception e) {
106             e.printStackTrace();
107         } finally {
108             close(null, psm, conn);
109         }
110         return result;
111     }
112 }

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的配置文件

 1 import java.beans.PropertyVetoException;
 2 import java.sql.Connection;
 3 import javax.sql.DataSource;
 4 import com.mchange.v2.c3p0.ComboPooledDataSource;
 5
 6 import utils.GlobalConstant;
 7
 8 public class DataSourceUtils {
 9     private static DataSource ds;
10
11     static {
12         /*
13          * 从配置文件读取配置信息 <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <!--
14          * 默认配置,如果没有指定则使用这个配置 --> <default-config> <property
15          * name="checkoutTimeout">30000</property> <property
16          * name="idleConnectionTestPeriod">30</property> <property
17          * name="initialPoolSize">3</property> <property
18          * name="maxIdleTime">30</property> <property
19          * name="maxPoolSize">10</property> <property
20          * name="minPoolSize">3</property> <property
21          * name="maxStatements">50</property> <property
22          * name="acquireIncrement">3</property><!-- 如果池中数据连接不够时一次增长多少个 -->
23          * <property name="driverClass">com.mysql.jdbc.Driver</property>
24          * <property name="jdbcUrl">
25          * <![CDATA[jdbc:mysql://127.0.0.1:3306/project?useUnicode=true&
26          * characterEncoding=UTF-8]]> </property> <property
27          * name="user">root</property> <property
28          * name="password">789123</property> </default-config> </c3p0-config>
29          *
30          * ds = // 默认的读取c3p0-config.xml中默认配置 new ComboPooledDataSource();
31          */
32         ComboPooledDataSource cpds = null;
33         try {
34             cpds = new ComboPooledDataSource();
35             cpds.setCheckoutTimeout(30000);
36             cpds.setIdleConnectionTestPeriod(30);
37             cpds.setInitialPoolSize(3);
38             cpds.setMaxIdleTime(30);
39             cpds.setMaxPoolSize(70);
40             cpds.setMaxStatementsPerConnection(100);
41             cpds.setMinPoolSize(3);
42             cpds.setMaxStatements(75);
43             cpds.setAcquireIncrement(3);
44             cpds.setDriverClass(GlobalConstant.CONNECTION_DRIVER);
45             cpds.setJdbcUrl(GlobalConstant.CONNECTION_URL);
46             cpds.setUser(GlobalConstant.CONNECTION_USER);
47             cpds.setPassword(GlobalConstant.CONNECTION_PASSWORD);
48             ds = cpds;
49         } catch (PropertyVetoException e) {
50             System.out.println("与MySQL数据库连接失败!");
51         }
52     }
53
54     private DataSourceUtils() {
55
56     }
57
58     public static DataSource getDatasSource() {
59         return ds;
60     }
61
62     public static Connection getConnection() {
63         Connection con = null;
64         try {
65             con = ds.getConnection();// 每一次从ds中获取一个新的连接
66         } catch (Exception e) {
67             e.printStackTrace();
68         }
69         return con;
70     }
71 }

DataSourceUtils

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

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

时间: 2024-08-09 19:50:37

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

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

JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet.beans)中建立数据库连接. 进行sql操作 断开数据库连接. 这种模式开发,存在的问题: 普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection 加载到内存中,再验证用户名和密码(得花费0.05s-1s的时间).需要数据库连接的时候,就向数据库要求一个,执行完成后再断开连接.这样的方式将会消耗大量的资源和

数据库连接池c3p0

一.概述: 数据库连接池C3P0框架是个非常优异的开源jar,高性能的管理着数据源,c3p0有两种数据源管理方式,一种是通过程序变本身来进行管理,还有一种是通过容器管理,本节讨论通过程序本身来进行管理,下一节讨论通过容器进行管理. 二.c3p0的三种实现方式 1.实现方式一:利用c3p0的API自己动手写代码,实现数据源 例如:在类路径下配置一个属性文件,config.properties,内容如下: Java代码   driverClass=xxx jdbcUrl=xxx user=xxx p

数据库连接池C3P0学习

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

数据库连接池c3p0和dbcp

转载:http://www.cnblogs.com/haogeBlogs/p/5856302.html 现在常用的开源数据连接池主要有c3p0.dbcp和proxool三种,其中: hibernate开发组推荐使用c3p0; spring开发组推荐使用dbcp(dbcp连接池有weblogic连接池同样的问题,就是强行关闭连接或数据库重启后,无法reconnect,告诉连接被重置,这个设置可以解决); hibernate in action推荐使用c3p0和proxool; dbcp所需jar:

JDBC和数据库连接池

在Java语言中,JDBC(JavaDataBase Connection)是应用程序与数据库沟通的桥梁, 即Java语言通过JDBC技术访问数据库.JDBC是一种"开放"的方案,它为数据库应用开发人员﹑数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序.JDBC提供两种API,分别是面向开发人员的API和面向底层的JDBC驱动程序API,底层主要通过直接的JDBC驱动和JDBC-ODBC桥驱动实现与数据库的连接. 一般来说,

网络协议 finally{ return问题 注入问题 jdbc注册驱动问题 PreparedStatement 连接池目的 1.2.1DBCP连接池 C3P0连接池 MYSQL两种方式进行实物管理 JDBC事务 DBUtils事务 ThreadLocal 事务特性 并发访问 隔离级别

1.1.1 API详解:注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 原因有2个: >导致驱动被注册2次. >强烈依赖数据库的驱动jar 解决办法: Class.forName("com.mysql.jdbc.Driver"); 1.1.2 API详解:java.sql.Statement接口: 操作sql语句,并返回相应结果 String sql = "某SQL语句&qu

JAVA jdbc获取数据库连接

JDBC获取数据库连接的帮助类 1 import java.io.InputStream; 2 import java.sql.Connection; 3 import java.sql.DriverManager; 4 import java.sql.ResultSet; 5 import java.sql.Statement; 6 import java.util.Properties; 7 8 public class jdbcUtil { 9 10 private static Stri

JDBC连接池C3P0

连接池 1)传统方式找DriverManager要连接,数目是有限的. 2)传统方式的close(),并没有将Connection重用,只是切断应用程序和数据库的桥梁,即无发送到SQL命令到数据库端执行 3)项目中,对于Connection不说,不会直接使用DriverManager取得,而使用连接池方式. 4)DBCP和C3P0,都是Java开源的,都必须直接或间接实现javax.sql.DataSource接口 5)DBCP连接池需要dbcp.properties文件,同时需加入3个对应的j

jdbc建立数据库连接的helloword

目录结构 package com.imooc.db; import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException; import com.mysql.jdbc.Connection;import com.mysql.jdbc.Statement; public class DBUtil { //数据库连接地址 private static final String URL = "jdbc