1. 程式人生 > 其它 >java c3p0連線資料庫例項(mysql)完整例項

java c3p0連線資料庫例項(mysql)完整例項

技術標籤:javajavajdbc

目錄

1.下載包c3p0的jar包,因我之前就有所以就用這個c3p0-0.9.2.1.jar,並引入到你的專案中。

2.在src下放入xml配置:c3p0-config.xml

3.編寫工具類:

4.編寫測試類:

5.執行結果:


1.下載包c3p0的jar包,因我之前就有所以就用這個c3p0-0.9.2.1.jar,並引入到你的專案中。

2.在src下放入xml配置:c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?>
 <c3p0-config>
     <!--
     C3P0的預設(預設)配置,
     如果在程式碼中“ComboPooledDataSource ds = new ComboPooledDataSource();”這樣寫就表示使用的是C3P0的預設(預設)配置資訊來建立資料來源
     -->
     <default-config>
         <property name="driverClass">com.mysql.jdbc.Driver</property>
         <property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
         <property name="user">root</property>
         <property name="password">root</property>
         
         <property name="acquireIncrement">5</property>
         <property name="initialPoolSize">10</property>
         <property name="minPoolSize">5</property>
         <property name="maxPoolSize">20</property>
     </default-config>
 
     <!--
     C3P0的命名配置,
     如果在程式碼中“ComboPooledDataSource ds = new ComboPooledDataSource("MySQL");”這樣寫就表示使用的是name是MySQL的配置資訊來建立資料來源
     -->
     <named-config name="MySQL">
         <property name="driverClass">com.mysql.jdbc.Driver</property>
         <property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
         <property name="user">root</property>
         <property name="password">root</property>
         
         <property name="acquireIncrement">5</property>
         <property name="initialPoolSize">10</property>
         <property name="minPoolSize">5</property>
         <property name="maxPoolSize">20</property>
     </named-config>
 
 </c3p0-config>

3.編寫工具類:

package com.yszd;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
 import com.mchange.v2.c3p0.ComboPooledDataSource;
 
 public class C3P0_Utils {
     
     private static ComboPooledDataSource dataSource = null;
     //在靜態程式碼塊中建立資料庫連線池
     static{
         try{
        	 dataSource = new ComboPooledDataSource("MySQL");//使用C3P0的命名配置來建立資料來源
             
         }catch (Exception e) {
             throw new ExceptionInInitializerError(e);
         }
     }
     
     public static Connection getConnection() throws SQLException{
         //從資料來源中獲取資料庫連線
         return dataSource.getConnection();
     }
     
     // 釋放資源
     public static void release(Connection conn,Statement st,ResultSet rs){
         if(rs!=null){
             try{
                 //關閉儲存查詢結果的ResultSet物件
                 rs.close();
             }catch (Exception e) {
                 e.printStackTrace();
             }
             rs = null;
         }
         if(st!=null){
             try{
                 //關閉負責執行SQL命令的Statement物件
                 st.close();
             }catch (Exception e) {
                 e.printStackTrace();
             }
         }
         
         if(conn!=null){
             try{
                 //將Connection連線物件還給資料庫連線池
                 conn.close();
             }catch (Exception e) {
                 e.printStackTrace();
             }
         }
     }
 }

4.編寫測試類:

package com.yszd;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DataSourceTest {

    public void c3p0DataSourceTest() {
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        try{
            //獲取資料庫連線
            conn = C3P0_Utils.getConnection();
            //插入語句
            String sql = "insert into test(id,name) values(?,?)";
            st = conn.prepareStatement(sql);
            st.setInt(1, 1);
            st.setString(2, "test");
            st.executeUpdate();
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            //釋放資源
        	C3P0_Utils.release(conn, st, rs);
        }
    }
    
    public static void main(String[] args) {
    	new DataSourceTest().c3p0DataSourceTest();
	}
}

5.執行結果: