java c3p0連線資料庫例項(mysql)完整例項
阿新 • • 發佈:2020-12-19
目錄
1.下載包c3p0的jar包,因我之前就有所以就用這個c3p0-0.9.2.1.jar,並引入到你的專案中。
2.在src下放入xml配置:c3p0-config.xml
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(); } }