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

歡迎訪問 生活随笔!

生活随笔

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

数据库

jdbc连接数据scanip_JDBC连接数据库的四种方式:DriverManager,DataSource,DBCP,C3P0

發布時間:2025/3/8 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jdbc连接数据scanip_JDBC连接数据库的四种方式:DriverManager,DataSource,DBCP,C3P0 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

方法1:使用java.sql.DriverManager類

驅動管理器類,用于管理所有注冊的驅動程序。

(注:DataSource 接口是 JDBC 2.0 API 中的新增內容,它提供了連接到數據源的另一種方法。使用 DataSource 對象是連接到數據源的首選方法。)

常用的兩個API

registerDriver(driver)? : 注冊驅動類對象

ConnectiongetConnection(url,user,password);? 獲取連接對象

@Test

public void test1(){

Statement stmt = null;

Connection conn = null;

try {

//1.驅動注冊程序 --內部執行了RegisterDriver

Class.forName("com.mysql.jdbc.Driver");

//2.獲取連接對象

conn = DriverManager.getConnection(url, user, password);

//3.創建Statement

stmt = conn.createStatement();

//4.準備sql

String sql = "CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),gender VARCHAR(2))";

//5.發送sql語句,執行sql語句,得到返回結果

int count = stmt.executeUpdate(sql);

//6.輸出

System.out.println("影響了"+count+"行!");

} catch (Exception e) {

e.printStackTrace();

throw new RuntimeException(e);

} finally{

//7.關閉連接(順序:后打開的先關閉)

if(stmt!=null)

try {

stmt.close();

} catch (SQLException e) {

e.printStackTrace();

throw new RuntimeException(e);

}

if(conn!=null)

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

throw new RuntimeException(e);

}

}

}

方法2:使用實現了javax.sql.DataSource接口的子類

javax.sql.DataSource接口

包名:javax.sql

接口名: DataSource

作為 DriverManager 工具的替代項,DataSource 對象是獲取連接的首選方法。DataSource接口由驅動程序供應商實現。共有三種類型的實現:

1. 基本實現 - 生成標準的 Connection 對象

2. 連接池實現 - 生成自動參與連接池的 Connection 對象。此實現與中間層連接池管理器一起使用。

3. 分布式事務實現 - 生成一個 Connection 對象,該對象可用于分布式事務,大多數情況下總是參與連接池。此實現與中間層事務管理器一起使用,大多數情況下總是與連接池管理器一起使用。

自己實現DataSource子類這種方法不常用,常用的方法可以參考方法3和方法4

插入一句:Sun公司約定:如果是連接池技術,都需要實現javax.sql.DataSource接口

方法3:DBCP連接池

DBCP 是 Apache 軟件基金組織下的開源連接池實現,使用DBCP數據源,應用程序應在系統中增加如下兩個 jar 文件:

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

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

Tomcat 的連接池正是采用該連接池來實現的。該數據庫連接池既可以與應用服務器整合使用,也可由應用程序獨立使用。

核心類:BasicDataSource

包名:org.apache.commons.dbcp

類名:ClassBasicDataSource extends Object implements DataSource

Basicimplementation of javax.sql.DataSource that is configured via

JavaBeansproperties. This is not the only way to combine the

commons-dbcp andcommons-pool packages, but provides a "one stop

shopping" solutionfor basic requirements.

2. 兩種方式實現連接池

1)硬編碼方式

2)配置方式

public class App_DBCP {

// 1. 硬編碼方式實現連接池

@Test

public void testDbcp() throws Exception {

// DBCP連接池核心類

BasicDataSource dataSouce = new BasicDataSource();

// 連接池參數配置:初始化連接數、最大連接數 / 連接字符串、驅動、用戶、密碼

dataSouce.setUrl("jdbc:mysql:///jdbc_demo");//數據庫連接字符串

dataSouce.setDriverClassName("com.mysql.jdbc.Driver"); //數據庫驅動

dataSouce.setUsername("root");//數據庫連接用戶

dataSouce.setPassword("root"); //數據庫連接密碼

dataSouce.setInitialSize(3); // 初始化連接

dataSouce.setMaxActive(6); // 最大連接

// 獲取連接

Connection con = dataSouce.getConnection();

con.prepareStatement("delete from admin where id=3").executeUpdate();

// 關閉

con.close();

}

@Test

// 2. 【推薦】配置方式實現連接池, 便于維護

public void testProp() throws Exception {

// 加載prop配置文件

Properties prop = new Properties();

// 獲取文件流

InputStream inStream = App_DBCP.class.getResourceAsStream("db.properties");

// 加載屬性配置文件

prop.load(inStream);

// 根據prop配置,直接創建數據源對象

DataSource dataSouce = BasicDataSourceFactory.createDataSource(prop);

// 獲取連接

Connection con = dataSouce.getConnection();

con.prepareStatement("delete from admin where id=4").executeUpdate();

// 關閉

con.close();

}

}

配置方式實現DBCP連接池,? 配置文件中的key與BaseDataSouce中的屬性一樣:

db.properties

url=jdbc:mysql:///jdbc_demo

driverClassName=com.mysql.jdbc.Driver

username=root

password=root

initialSize=3

maxActive=6

方法4:C3P0連接池

C3P0連接池:

最常用的連接池技術!Spring框架,默認支持C3P0連接池技術!

C3P0連接池,核心類:

CombopooledDataSource ds;

包名:com.mchange.v2.c3p0

類名:ClassComboPooledDataSource? implementsPooledDataSource implements DataSource

使用:

1.??????下載,引入jar文件:? c3p0-0.9.1.2.jar

2.??????使用連接池,創建連接

a)????????硬編碼方式

b)????????配置方式(xml)

自動加載src下c3p0的配置文件【c3p0-config.xml】

public class App {

@Test

//1. 硬編碼方式,使用C3P0連接池管理連接

public void testCode() throws Exception {

// 創建連接池核心工具類

ComboPooledDataSource dataSource = new ComboPooledDataSource();

// 設置連接參數:url、驅動、用戶密碼、初始連接數、最大連接數

dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/jdbc_demo");

dataSource.setDriverClass("com.mysql.jdbc.Driver");

dataSource.setUser("root");

dataSource.setPassword("root");

dataSource.setInitialPoolSize(3);

dataSource.setMaxPoolSize(6);

dataSource.setMaxIdleTime(1000);

// ---> 從連接池對象中,獲取連接對象

Connection con = dataSource.getConnection();

// 執行更新

con.prepareStatement("delete from admin where id=7").executeUpdate();

// 關閉

con.close();

}

@Test

//2. XML配置方式,使用C3P0連接池管理連接

public void testXML() throws Exception {

// 創建c3p0連接池核心工具類

// 自動加載src下c3p0的配置文件【c3p0-config.xml】

ComboPooledDataSource dataSource = new ComboPooledDataSource();// 使用默認的配置

// 獲取連接

Connection con = dataSource.getConnection();

// 執行更新

con.prepareStatement("delete from admin where id=5").executeUpdate();

// 關閉

con.close();

}

}

總結:

DataSource 接口是 JDBC 2.0 API 中的新增內容,它提供了連接到數據源的另一種方法。使用 DataSource 對象是連接到數據源的首選方法。

DataSource比DriverManager好在哪里呢?

1. DataSource創建的connection既有基本實現,也有連接池實現(可以復用,DataSource幫我們實現了復用機制),而DriverManager創建的connection則不能復用(當然自己寫連接池,自己來實現復用機制也是可以的,可以參考:使用動態代理實現自定義連接池)。所以sun公司規定連接池技術需要實現DataSource接口。

2. DataSource中封裝了DriverManager的使用,使用DataSource的一個好處是可以在外邊配置(如C3P0直接修改xml文件,不用自己寫配置文件db.properties)。

3. 配置DataSource,由容器來獲取Connection并結合連接池的應用比直接使用DriverManager操作JDBC效率高一些(參考:DBCP vs DriverManage效率)。

總結

以上是生活随笔為你收集整理的jdbc连接数据scanip_JDBC连接数据库的四种方式:DriverManager,DataSource,DBCP,C3P0的全部內容,希望文章能夠幫你解決所遇到的問題。

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