JDBCUtils工具类

JdbcUtils.java

 1 import java.sql.Connection;
 2 import java.sql.SQLException;
 3
 4 import javax.sql.DataSource;
 5
 6 import com.mchange.v2.c3p0.ComboPooledDataSource;
 7 /**
 8  * 依赖:
 9  *        + c3p0-config.xml
10  *        + c3p0-0.9.2-pre1.jar
11  *        + mchange-commons-0.2.jar
12  * 版本1.3
13  * 更新日期:2015/2/23
14  * @author Administrator
15  *
16  */
17 public class JdbcUtils {
18     //ComboPooledDataSource(String configName)的参数configName指的是配置文件c3p0-config.xml中的 <named-config name="mysql">...</named-config>
19     //如果没有输入configName参数,那么就采用默认的<default-config>...</defalut-config>
20     private static ComboPooledDataSource dataSource = new ComboPooledDataSource("mysql");
21     private static Connection con = null;
22     private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
23     /**
24      * 获取连接对象
25      * @return
26      * @throws SQLException
27      */
28     public static Connection getConnection() throws SQLException{
29         con = tl.get();
30         if(con != null){return con;}
31         return dataSource.getConnection();
32     }
33     /**
34      * 获取连接池对象
35      * @return
36      */
37     public static DataSource getDataSource(){
38         return dataSource;
39     }
40     /**
41      * 开启事务
42      * @throws SQLException
43      */
44     public static void beginTransaction() throws SQLException{
45         con = tl.get();
46         if(con != null){throw new RuntimeException("事务已经开启!不能重复开启!");}
47         con = getConnection();
48         con.setAutoCommit(false);
49         tl.set(con);
50     }
51     /**
52      * 提交事务
53      * @throws SQLException
54      */
55     public static void commitTransaction() throws SQLException{
56         con = tl.get();
57         if(con == null){throw new RuntimeException("事务还没开启!不能提交!");}
58         con.commit();
59         con.close();//归还连接对象到连接池
60         tl.remove();//移除连接对象con。那么tl.get() == null
61     }
62     /**
63      * 回滚事务
64      * @throws SQLException
65      */
66     public static void rollbackTransaction() throws SQLException{
67         con = tl.get();
68         if(con == null){throw new RuntimeException("事务还没开启!不能回滚!");}
69         con.rollback();
70         con.close();
71         tl.remove();
72     }
73     /**
74      * 关闭 非事务专用的连接
75      * @param connection
76      * @throws SQLException
77      */
78     public static void releaseConnection(Connection connection) throws SQLException{
79         con = tl.get();//获取事务专用连接
80         if(con == null){connection.close();}
81         if(con != connection){connection.close();}
82     }
83 }

c30p-config.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <c3p0-config>
 3     <!-- c3p0有两种配置方式,一种是默认的default-config,一种是按名字区分:named-config需要添加一个属性值name -->
 4     <default-config>
 5         <property name="jdbcUrl">jdbc:oracle:thin:username/[email protected]:1521:EMP</property>
 6         <property name="driverClass">oracle.jdbc.driver.OracleDriver</property>
 7         <property name="user">root</property>
 8         <property name="password"></property>
 9
10         <property name="acquireIncrement">3</property>
11         <property name="initialPoolSize">10</property>
12         <property name="minPoolSize">2</property>
13         <property name="maxPoolSize">10</property>
14     </default-config>
15     <named-config name="mysql">
16         <property name="jdbcUrl">jdbc:mysql://localhost:3306/db_user</property>
17         <property name="driverClass">com.mysql.jdbc.Driver</property>
18         <property name="user">root</property>
19         <property name="password"></property>
20
21         <property name="acquireIncrement">3</property>
22         <property name="initialPoolSize">10</property>
23         <property name="minPoolSize">2</property>
24         <property name="maxPoolSize">10</property>
25     </named-config>
26 </c3p0-config>

在这个c3p0-config.xml中配置了两个数据库,如果我要使用oracle的数据库那么我在JdbcUtils类中的ComboPoolDataSource()不传入参数即可,也就是采用默认的方式。

而我在c3p0-config.xml中就是把oracle配成了默认的方式。如果我要不使用默认方式,那么我只要在ComboPoolDataSource(String configName)中指定相应的名称就可以了,如上面的代码。

时间: 2024-12-21 03:43:05

JDBCUtils工具类的相关文章

JDBC:编写通用的 JDBCUtils工具类

基本上已经可以应付常用方法 1.为JDBCUtils 添加事务处理方法 2.处理多线程并发访问问题 package cn.cil.Utls; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; /** * 编写通用的 JDB

jdbc数据库连接之jdbcUtils工具类抽取

JDBC数据库连接1.准备数据库 初始化数据库和表:        CREATE DATABASE day07;        USE day07;                    create table category(            cid varchar(20) primary key,            cname varchar(20)        );                insert into category values('c001','电器'

JavaWeb基础之JdbcUtils工具类2.0

使用c3p0连接池来改版JdbcUtils工具 1. 使用c3p0连接池获取连接,使代码更加简单 1 /** 2 * 使用c3p0连接池做小工具 3 * JdbcUtils v2.0 4 * @author hui.zhang 5 * 6 */ 7 public class JdbcUtils { 8 // 配置文件的默认配置,必须给出c3p0-config.xml 9 private static ComboPooledDataSource dataSource = new ComboPool

基于durid的JDBCUtils工具类

1.JDBCUtils类 package com.alphajuns.utils; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.

JDBCUtils工具类配置文件的读取方式

//第一种方式 Properties prop= new Properties();        //读取文件   通过类加载读取        InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("data.properties");        prop.load(is);        String driverClass = prop.getProperty("driverCl

JDBCUtils工具类(转)

JdbcUtils.java import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; /** * 依赖: * + c3p0-config.xml * + c3p0-0.9.2-pre1.jar * + mchange-commons-0.2.jar * 版本1.3 * 更新日期:2

day17(JDBC入门&jdbcUtils工具介绍)

day17 JDBC整体思维导图 JDBC入门 导jar包:驱动! 加载驱动类:Class.forName("类名"); 给出url.username.password,其中url背下来! 使用DriverManager类来得到Connection对象! ? ? ? 1 什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java

能做事务的JdbcUtils工具

JdbcUtils工具类的封装 package cn.wht.utils; import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; public class JdbcUtils { private static DataSource dataSource=null; //数据源 p

00313_JDBC工具类

1."获得数据库连接"操作,将在以后的增删改查所有功能中都存在,可以封装工具类JDBCUtils.提供获取连接对象的方法,从而达到代码的重复利用. 2.该工具类提供方法:public static Connection getConn ().代码如下: 1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 4 /* 5 * JDBC工具类 6 */ 7 public class JDBCUtils { 8 pu