日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

c3p0 0.9.1.2 配套mysql_连接数据库,使用c3p0技术连接MySQL数据库

發布時間:2023/12/1 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c3p0 0.9.1.2 配套mysql_连接数据库,使用c3p0技术连接MySQL数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

讀取配置文件連接MySQL數據庫

先確認已經導入了 mysql 的驅動包

db.properties

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/v20?useUnicode=true&characterEncoding=utf8

username=root

password=123456

JdbcUtil.java

package com.stu_mvc.utils;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.Properties;

public class JdbcUtil {

private static String CLASS_DRIVER = "";

private static String URL = "";

private static String USERNAME = "";

private static String PASSWORD = "";

static {

Properties properties = new Properties();

try {

//讀取上面的配置文件

properties.load(JdbcUtil.class.getResourceAsStream("/db.properties"));

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

CLASS_DRIVER = properties.getProperty("driver");

URL = properties.getProperty("url");

USERNAME = properties.getProperty("username");

PASSWORD = properties.getProperty("password");

try {

Class.forName(CLASS_DRIVER);

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

/**

*getConn()

*獲取conn

*/

public static Connection getConn() {

Connection conn = null;

try {

conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);

} catch (SQLException e) {

e.printStackTrace();

}

return conn;

}

/**

* 利用泛型改進釋放資源 rs,st,conn

*/

public static void closeAll(T... autos) {

for (AutoCloseable t : autos) {

if (t != null) {

try {

t.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

}

使用 c3p0數據庫連接池連接MySQL

普通的數據庫連接創建的缺點:

用戶每次請求都需要向數據庫獲得鏈接,而數據庫創建連接通常需要消耗相對較大的資源,創建時間也較長。

數據庫連接池概念

所謂數據庫連接池,可以看作 :在用戶和數據庫之間創建一個”池”,這個池中有若干個連接對象,當用戶想要連接數據庫,就要先從連接池中獲取連接對象,然后操作數據庫。一旦連接池中的連接對象被拿光了,下一個想要操作數據庫的用戶必須等待,等待其他用戶釋放連接對象,把它放回連接池中,這時候等待的用戶才能獲取連接對象,從而操作數據庫。

下載C3P0工具包

C3P0工具包包含的版本:

c3p0-0.9.5.2

mchange-commons-java-0.2.11

c3p0-config.xml 的配置

**注意: ** xml 配置文件的名稱必須是:c3p0-config.xml ,也是放在src 目錄下

?這里的 jdbcUrl 比較容易出問題,要是出現問題,建議仔細找找。

com.mysql.jdbc.Driver

jdbc:mysql:///v20

root

123456

JdbcUtil.java

寫一個封裝的工具類,開發起來還不是美滋滋!

package com.register_mvc.utils;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.Properties;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import com.mchange.v2.c3p0.impl.DbAuth;

public class JdbcUtil {

// 創建 c3p0 連接池對象

static ComboPooledDataSource dataSource = new ComboPooledDataSource("v20");

//創建一個 ThreadLocal

static ThreadLocal th = new ThreadLocal();

/**

*getConn()

*獲取conn

*/

public static Connection getConn() {

// 從連接池中獲取連接

// 先從 th 中獲取,如果為空再到連接池中獲取

Connection conn = th.get();

if (conn == null) {

try {

//把 獲取的conn 存到 ThreadLocal 中

// ThreadLocal 內部有個map

// 通過當前的 線程 作為 key value 是存的內容

// 統一線程 key一致 value值 肯定一致

conn = dataSource.getConnection();

//把 conn存到th中

th.set(conn);

} catch (SQLException e) {

e.printStackTrace();

}

}

return conn;

}

/**

* 利用泛型方法釋放資源 rs,st,conn

*/

public static void closeAll(T... autos) {

for (AutoCloseable t : autos) {

if (t != null) {

try {

t.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

}

總結

以上是生活随笔為你收集整理的c3p0 0.9.1.2 配套mysql_连接数据库,使用c3p0技术连接MySQL数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。