C3p0連接池-Java(新手)
阿新 • • 發佈:2019-04-03
void fig all date port java sys create source
1 1 數據庫連接池 C3p0 和 Druid 2 3 1.1 定義 : 4 5 本質上就是個容器(集合) 存放數據庫連接的容器 當系統初始化以後 容器被創建 容器中就會申請一些連接對象 當用戶來訪問的數據庫的時候 從容器中取連接對象,用戶用完之後 歸還 6 7 1.2 如何用: 8 9 1.2.1 標準接口 Datasource javax.sql包下 10 11 方法:getConnection();獲得鏈接12 13 Connection.close();歸還 14 15 1.2.2 一般我們不實現這個接口 數據庫廠商或者連接池廠商來實現這個接口 16 17 1.2.3 C3P0 18 19 步驟: 20 21 1 導包 兩個包 c3p0-0.9.5.2.jar mchange-commons-java-0.2.12 22 23 2 定義配置文件 名稱 c3p0.properties c3p0-config.xml24 25 路徑:將文件放到src目錄下 26 27 3 創建核心對象 數據庫連接池對象ComboPoolDataSource 28 29 4 獲取鏈接 getConnection
例1:
1 package cn.Wuchuang.C3p0Druid; 2 3 import com.mchange.v2.c3p0.ComboPooledDataSource; 4 5 import javax.sql.DataSource; 6 importjava.sql.Connection; 7 import java.sql.SQLException; 8 9 public class Demo1C3P0 { 10 public static void main(String[] args) throws SQLException { 11 // 1 導包 兩個包 c3p0-0.9.5.2.jar mchange-commons-java-0.2.12 12 // 2 定義配置文件 名稱 13 // 路徑:將文件放到src目錄下 14 // 3 創建核心對象 數據庫連接池對象ComboPoolDataSource 15 DataSource ds = new ComboPooledDataSource(); 16 // 4 獲取鏈接 getConnection 17 Connection conn = ds.getConnection(); 18 System.out.println(conn+"哈哈"); 19 } 20 }
例2:
1 package cn.Wuchuang.C3p0Druid; 2 3 import com.mchange.v2.c3p0.ComboPooledDataSource; 4 5 import javax.sql.DataSource; 6 import java.sql.Connection; 7 8 public class Demo2C3P0 { 9 public static void main(String[] args) throws Exception { 10 DataSource data = new ComboPooledDataSource(); 11 12 for (int i =1;i<=11;i++){ 13 Connection conn = data.getConnection(); 14 System.out.println(i+" "+conn); 15 if (i==5){ 16 //歸還連接池。 17 conn.close(); 18 } 19 } 20 } 21 }
例3:
1 package cn.Wuchuang.C3p0Druid; 2 3 import com.alibaba.druid.pool.DruidDataSourceFactory; 4 5 import javax.sql.DataSource; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.sql.Connection; 9 import java.util.Properties; 10 11 public class Demo3Druid { 12 public static void main(String[] args) throws Exception { 13 //加載文件。 14 Properties pro = new Properties(); 15 InputStream in = Demo3Druid.class.getClassLoader().getResourceAsStream("druid.properties"); 16 pro.load(in); 17 //獲得數據庫連接池對象、 18 //通過DruidDataSourceFactory 19 DataSource dats = DruidDataSourceFactory.createDataSource(pro); 20 //獲取鏈接。 21 Connection conn = dats.getConnection(); 22 System.out.println(conn+"我被測試了"); 23 } 24 }
例4:
1 package cn.Wuchuang.C3p0Druid; 2 3 import org.junit.Test; 4 import org.springframework.jdbc.core.JdbcTemplate; 5 import org.springframework.jdbc.support.JdbcUtils; 6 7 import java.sql.Connection; 8 import java.sql.PreparedStatement; 9 import java.sql.SQLException; 10 11 public class Demo4Druid { 12 @Test 13 public void Druids(){ 14 15 Connection conn = null; 16 PreparedStatement ppst = null; 17 try { 18 //完成一個添加操作。 19 //獲得鏈接。 20 conn = JDBCUtils.getConnection(); 21 //定義SQL語句。 22 String sql =("insert into salarys values(7,?,?)"); 23 //獲得執行的語句。 24 ppst = conn.prepareStatement(sql); 25 //給?賦值。 26 ppst.setInt(1,610); 27 ppst.setInt(2,800); 28 //執行SQL語句。 29 int i = ppst.executeUpdate(); 30 System.out.println(i); 31 } catch (Exception e) { 32 e.printStackTrace(); 33 }finally { 34 JDBCUtils.close(conn,ppst); 35 } 36 } 37 }
JDBC工具類:
1 package cn.Wuchuang.C3p0Druid; 2 3 import javax.sql.DataSource; 4 import java.sql.*; 5 6 public class JDBCUtils { 7 private static final String r = "root"; 8 private static final String p = "root"; 9 private static final String url = "jdbc:mysql:///semployee"; 10 private static final String DRIVER = "com.mysql.jdbc.Driver"; 11 //註冊驅動。 12 static{ 13 try { 14 Class.forName(DRIVER); 15 } catch (Exception e) { 16 e.printStackTrace(); 17 } 18 } 19 //得到數據庫鏈接。 20 public static Connection getConnection() throws Exception { 21 return DriverManager.getConnection(url,r,p); 22 } 23 24 //關閉鏈接,執行打開的資源。 25 public static void close(Connection conn,Statement stmt){ 26 if (stmt!=null){ 27 try { 28 stmt.close(); 29 } catch (Exception e) { 30 e.printStackTrace(); 31 } 32 } 33 if (conn!=null){ 34 try { 35 conn.close(); 36 } catch (Exception e) { 37 e.printStackTrace(); 38 } 39 } 40 } 41 //關閉所有打開的資源。 42 public static void close(Connection conn, Statement stmt, ResultSet rs){ 43 if (stmt!=null){ 44 try { 45 stmt.close(); 46 } catch (Exception e) { 47 e.printStackTrace(); 48 } 49 }if (conn!=null){ 50 try { 51 conn.close(); 52 } catch (Exception e) { 53 e.printStackTrace(); 54 } 55 } 56 if (rs!=null){ 57 try { 58 rs.close(); 59 } catch (Exception e) { 60 e.printStackTrace(); 61 } 62 } 63 } 64 }
C3p0連接池-Java(新手)