1. 程式人生 > 其它 >微信開發,解決使用者暱稱帶emoji圖示導致無法正常儲存暱稱到mysql問題(我的資料庫是mysql5.6)

微信開發,解決使用者暱稱帶emoji圖示導致無法正常儲存暱稱到mysql問題(我的資料庫是mysql5.6)

編寫標準的資料來源(規範)

Java為資料庫連線池提供了公共的介面:javax.sql.DataSource,各個廠商需要讓自己的連線池實現這個介面。這樣應用程式可以方便的切換不同廠商的連線池!

常見的第三方連線池如下:

  • C3P0是一個開源的JDBC連線池,它實現了資料來源和JNDI繫結,支援JDBC3規範和JDBC2的標準擴充套件。C3P0是非同步操作的,所以一些操作時間過長的JDBC通過其它的輔助執行緒完成。目前使用它的開源專案有Hibernate,Spring等。C3P0有自動回收空閒連線功能
  • 阿里巴巴-德魯伊druid連線池:Druid是阿里巴巴開源平臺上的一個專案,整個專案由資料庫連線池、外掛框架和SQL解析器組成。該專案主要是為了擴充套件JDBC的一些限制,可以讓程式設計師實現一些特殊的需求。
  • DBCP(DataBase Connection Pool)資料庫連線池,是Apache上的一個Java連線池專案,也是Tomcat使用的連線池元件。dbcp沒有自動回收空閒連線的功能。

C3P0連線池

使用步驟

  1. 匯入c3p0-0.9.1.2.jar
  2. 拷貝配置檔案到src目錄
  3. 建立連線池(配置檔案自動讀取的)
  • 編寫配置檔案 c3p0-config.xml
<c3p0-config>
    <!-- 使用預設的配置讀取連線池物件 -->
    <default-config>
        <!--  連線引數 -->
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/day19</property>
        <property name="user">root</property>
        <property name="password">root</property>
        <!-- 連線池引數 -->
        <property name="initialPoolSize">5</property>
    </default-config>
</c3p0-config>

c3p0連線池常用的配置引數:

引數說明
initialPoolSize初始連線數
maxPoolSize最大連線數
checkoutTimeout最大等待時間
maxIdleTime最大空閒回收時間

初始連線數:剛建立好連線池的時候準備的連線數量
最大連線數:連線池中最多可以放多少個連線
最大等待時間:連線池中沒有連線時最長等待時間
最大空閒回收時間:連線池中的空閒連線多久沒有使用就會回收

編寫Java程式碼

/**
 * C3P0連線池的工具類
 *
 */
public class C3P0Utils {
    //1. 建立一個C3P0的連線池物件(會自動讀取src目錄下的c3p0-config.xml,所以不需要我們解析配置檔案)
    public static DataSource ds = new ComboPooledDataSource();

    //2. 提供 從連線池中 獲取連線物件的方法
    public static Connection getConnection() throws SQLException {
        Connection conn = ds.getConnection();
        return conn;
    }

    //3. 提供 獲得資料來源(連線池物件)的方法
    public static DataSource getDataSource(){
        return ds;
    }
}

Druid 連線池

Druid是阿里巴巴開發的號稱為監控而生的資料庫連線池,Druid是國內目前最好的資料庫連線池。在功能、效能、擴充套件性方面,都超過其他資料庫連線池。Druid已經在阿里巴巴部署了超過600個應用,經過一年多生產環境大規模部署的嚴苛考驗。如:一年一度的雙十一活動,每年春運的搶火車票。

Druid的下載地址:

DRUID連線池使用的jar包:druid-1.1.16.jar

Druid連線池工具類編寫

步驟:

  1. 匯入DRUID jar 包
  2. 拷貝配置檔案到src目錄
  3. 根據配置檔案 建立連線池物件
  4. 從連線池物件獲得連線

實現:

建立druid.properties, 放在src目錄下

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/day19
username=root
password=root

編寫Java程式碼

/**
 * 阿里巴巴的連線池 Druid 工具類
 */
public class DruidUtils {
    /*
    1. 載入 druid.properties 配置檔案
    2. 建立 Druid 連線池物件
    3. 提供 獲得 連線池物件的方法
    4. 提供 從連線池中 獲取連線物件Connection的 方法
    */

    public static DataSource ds = null;

    static {
        try {
            //1. 載入 druid.properties 配置檔案
            InputStream is = DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            Properties prop = new Properties();
            prop.load(is);
            //2. 建立 Druid 連線池物件
           ds = DruidDataSourceFactory.createDataSource(prop);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /*
    3. 提供 獲得 連線池物件的方法
     */
    public static DataSource getDataSource(){
        return ds;
    }

    /*
    4. 提供 從連線池中 獲取連線物件Connection的 方法
     */
    public static Connection getConnetion() throws SQLException {
        Connection conn = ds.getConnection();
        return  conn;
    }
}