Java使用MySQL實(shí)現(xiàn)連接池代碼實(shí)例
官方:數(shù)據(jù)庫連接池(Connection pooling)是程序啟動(dòng)時(shí)建立足夠的數(shù)據(jù)庫連接,并將這些連接組成一個(gè)連接池,由程序動(dòng)態(tài)地對(duì)連接池中的連接進(jìn)行申請(qǐng),使用,釋放。
理解:創(chuàng)建數(shù)據(jù)庫連接池是一個(gè)很耗時(shí)的操作,也容易對(duì)數(shù)據(jù)庫造成安全隱患。所以,在程序初始化的時(shí)候,集中創(chuàng)建多個(gè)數(shù)據(jù)庫連接池,并把他們集中管理,供程序使用,可以保證較快的數(shù)據(jù)庫讀寫速度,還更加的安全可靠。
手動(dòng)配置連接池:
/** * 手動(dòng)設(shè)置連接池 */ public void demo1(){ // 獲得連接: Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try{ // 創(chuàng)建連接池: ComboPooledDataSource dataSource = new ComboPooledDataSource(); // 設(shè)置連接池的參數(shù): dataSource.setDriverClass('com.mysql.jdbc.Driver'); dataSource.setJdbcUrl('jdbc:mysql:///jdbctest'); dataSource.setUser('root'); dataSource.setPassword('abc'); dataSource.setMaxPoolSize(20); dataSource.setInitialPoolSize(3); // 獲得連接: conn = dataSource.getConnection(); // 編寫Sql: String sql = 'select * from user'; // 預(yù)編譯SQL: pstmt = conn.prepareStatement(sql); // 設(shè)置參數(shù) // 執(zhí)行SQL: rs = pstmt.executeQuery(); while(rs.next()){System.out.println(rs.getInt('uid')+' '+rs.getString('username')+' '+rs.getString('password')+' '+rs.getString('name')); } }catch(Exception e){ e.printStackTrace(); }finally{ JDBCUtils.release(rs, pstmt, conn); } }
使用配置文件配置連接池:
配置文件xml如下:
<?xml version='1.0' encoding='UTF-8'?><c3p0-config> <default-config> <property name='driverClass'>com.mysql.jdbc.Driver</property> <property name='jdbcUrl'>jdbc:mysql:///jdbctest</property> <property name='user'>root</property> <property name='password'>abc</property> <property name='initialPoolSize'>5</property> <property name='maxPoolSize'>20</property> </default-config> </c3p0-config>
代碼如下:
/** * 使用配置文件的方式 */ public void demo2(){ Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try{ /*// 獲得連接: ComboPooledDataSource dataSource = new ComboPooledDataSource();*/ // 獲得連接: // conn = dataSource.getConnection(); conn = JDBCUtils2.getConnection(); // 編寫Sql: String sql = 'select * from user'; // 預(yù)編譯SQL: pstmt = conn.prepareStatement(sql); // 設(shè)置參數(shù) // 執(zhí)行SQL: rs = pstmt.executeQuery(); while(rs.next()){System.out.println(rs.getInt('uid')+' '+rs.getString('username')+' '+rs.getString('password')+' '+rs.getString('name')); } }catch(Exception e){ e.printStackTrace(); }finally{ JDBCUtils2.release(rs, pstmt, conn); } }
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Django ORM實(shí)現(xiàn)按天獲取數(shù)據(jù)去重求和例子2. Jsp中request的3個(gè)基礎(chǔ)實(shí)踐3. XML入門的常見問題(一)4. jsp EL表達(dá)式詳解5. 解決ajax的delete、put方法接收不到參數(shù)的問題方法6. IntelliJ IDEA 統(tǒng)一設(shè)置編碼為utf-8編碼的實(shí)現(xiàn)7. idea修改背景顏色樣式的方法8. chat.asp聊天程序的編寫方法9. IntelliJ IDEA設(shè)置自動(dòng)提示功能快捷鍵的方法10. 怎樣才能用js生成xmldom對(duì)象,并且在firefox中也實(shí)現(xiàn)xml數(shù)據(jù)島?
