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

歡迎訪問 生活随笔!

生活随笔

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

数据库

03_dbcp数据源依赖jar包,DBCP中API介绍,不同过dbcp方式使用dbcp数据库连接池,通过配置文件使用dbcp数据库连接池

發布時間:2024/9/27 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 03_dbcp数据源依赖jar包,DBCP中API介绍,不同过dbcp方式使用dbcp数据库连接池,通过配置文件使用dbcp数据库连接池 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


DBCP數據源

使用DBCP數據源,需要導入兩個jar

Commons-dbcp.jar:連接池的實現

Common-pool.jar:連接池實現的依賴庫。

?

導入mysqljar包。

?

DBCP核心API

BasciDataSource?? 它可以通過實例化對象的方式獲得一個對象。

它里面有如下方法:

setDriverClassName(String driverClassName) 設置驅動類的名稱。

setInitialSize(int initialSize) 設置初始化時的鏈接數目。

setMaxActive(int maxIdle) 設置最大的并發訪問數量。

setMaxIdle(int maxIdle): 設置最大的閑置數目。

setPassword:用于設置密碼。

setUrl:設置url

setUsername:設置用戶名。

?

?

數據源實現BasicDataSourceFactory?? 用于創建數據源的工廠類,

?

不設配置文件時使用BasicDataSource的程序的寫法:

package cn.toto.utils;

?

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

?

import javax.sql.DataSource;

?

import org.apache.commons.dbcp.BasicDataSource;

?

public class JdbcUtils {

??? private JdbcUtils(){}

??? //定義BasicDataSource的父類接口的形式,獲得ds的參數。

??? private static DataSource ds;

???

??? static {

?????????? //要想使用寫好的數據源的功能,得先初始化一個dbcp連接池

?????????? BasicDataSource bds = new BasicDataSource();

??????????

?????????? //設置一系列參數

?????????? bds.setDriverClassName("com.mysql.jdbc.Driver");

?????????? bds.setUrl("jdbc:mysql://localhost:3306/day14");

?????????? bds.setUsername("root");

?????????? bds.setPassword("123456");

??????????

?????????? //設置初始化大小

?????????? bds.setInitialSize(5);?//初始時設置5個連接數

?????????? bds.setMaxActive(20);//設置并發訪問數目。

?????????? //bds.setMaxWait(0);//設置最大等待時間。不等待。

??????????

?????????? ds = bds;? //獲得數據是通過父接口的DataSource接口。

??? }

??? //獲得連接池

??? public static DataSource getDataSource(){

?????? return ds;

??? }

?

???

??? //獲得與指定數據庫的連接

??? public static Connection getConnection() throws SQLException{

?????? //從連接池返回一個連接??

?????? return ds.getConnection();

??? }

???

??? public static void release(ResultSet rs,Statement stmt,Connection conn){

?????? if(rs!=null) {

??? ?????? try{

????????????? rs.close();

?????????? }catch(SQLException e){

????????????? e.printStackTrace();

?????????? }

?????????? rs = null;

?????? }

?????? if(stmt!=null){

?????????? try{

????????????? stmt.close();

?????????? }catch(SQLException e){

????????????? e.printStackTrace();

?????????? }

?????????? stmt = null;

?????? }

?????? if(conn!= null) {

?????????? try{

????????????? conn.close();

?????????? }catch(SQLException e){

????????????? e.printStackTrace();

?????????? }

?????????? conn = null;

?????? }

??? }

}

?

用于驗證的主函數的寫法:

package cn.toto.demo;

?

import java.sql.Connection;

import java.sql.SQLException;

?

import cn.toto.utils.JdbcUtils;

?

public class Demo {

?

??? public static void main(String[] args) throws SQLException {

??????

?????? for(int i=0;i<30;i++){

?????????? Connection conn = JdbcUtils.getConnection();//如果只寫這句,程序將一直等待執行。

?????????? System.out.println(conn);//不寫下面一句時,打印輸出,驗證是否有20條,結果是20

??????????

?????????? conn.close();//用一個放回一個,加上這一句之后將出現30條數據。

?????? }

??? }

?

}

?

在文檔中還有一個方法:

org.apache.commons.dbcp
Class BasicDataSourceFactory
它里面有一個這樣的方法:

createDataSource(Properties?properties)
??????????Creates andconfigures a
BasicDataSourceinstance based on the given properties.

它是根據Properties,根據properties中的信息獲得信息。

配置dbcp的配置文件的方法是:找到文檔中的Configuration,里面有多個屬性。

src下面編寫一個一個配置文件config.properties

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/day14

username=root

password=123456

initialSize=5

maxiActive=20

?

通過配置文件的方式獲得的數據源的源碼是:

package cn.toto.utils;

?

import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Properties;

?

import javax.sql.DataSource;

?

import org.apache.commons.dbcp.BasicDataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

?

public class JdbcUtils {

??? private JdbcUtils() {

??? }

?

??? // 定義BasicDataSource的父類接口的形式,獲得ds的參數。

??? private static DataSource ds;

?

??? static {

?????? try {

?????????? InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream(

????????????????? "config.properties");//通過類加載的方式獲得獲得配置文件的流

?????????? Properties prop = new Properties();

?????????? prop.load(in);//通過流將配置項加載進來。

?????????? //通過工廠類讀取

?????????? ds = BasicDataSourceFactory.createDataSource(prop);

?????? } catch (Exception e) {

?????????? throw new ExceptionInInitializerError();

?????? }

??? }

?

??? // 獲得連接池

??? public static DataSource getDataSource() {

?????? return ds;

??? }

?

??? // 獲得與指定數據庫的連接

??? public static Connection getConnection() throws SQLException {

?????? // 從連接池返回一個連接

?????? return ds.getConnection();

??? }

?

??? public static void release(ResultSet rs, Statement stmt, Connection conn) {

?????? if (rs != null) {

?????????? try {

????????????? rs.close();

?????????? } catch (SQLException e) {

????????????? e.printStackTrace();

?????????? }

?????????? rs = null;

?????? }

?????? if (stmt != null) {

?????????? try {

????????????? stmt.close();

?????????? } catch (SQLException e) {

????????????? e.printStackTrace();

?????????? }

?????????? stmt = null;

?????? }

?????? if (conn != null) {

?????????? try {

????????????? conn.close();

?????????? } catch (SQLException e) {

????????????? e.printStackTrace();

?????????? }

?????????? conn = null;

?????? }

??? }

}

總結

以上是生活随笔為你收集整理的03_dbcp数据源依赖jar包,DBCP中API介绍,不同过dbcp方式使用dbcp数据库连接池,通过配置文件使用dbcp数据库连接池的全部內容,希望文章能夠幫你解決所遇到的問題。

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