數據庫連接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建立自己相應的數據庫即可測試。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM