2009年11月11日

          JDBC01之基礎(chǔ)(未完存稿)

           

          JDBCJava Database Connectivity)是java訪問數(shù)據(jù)庫的基石,其它技術(shù)(如第三方O/R工具Hibernate,ibatis等)都是對JDBC的封裝。是Java數(shù)據(jù)庫連接的一個標(biāo)準(zhǔn),是進(jìn)行數(shù)據(jù)庫連接的抽象層,由Java編寫的一組類和接口組成,其接口的實現(xiàn)由各個數(shù)據(jù)庫廠商來完成。

          JDBC分類:

          JDBC-ODBC橋,通過JDBC-ODBC的調(diào)用方法調(diào)用事先已在使用者計算機上安裝好的ODBCOpen Database Connectivity 微軟公司開放服務(wù)結(jié)構(gòu)中有關(guān)數(shù)據(jù)庫的一個組成部分)驅(qū)動。

          部分本地API部分Java的驅(qū)動程序,類似以上。

          JDBC網(wǎng)絡(luò)純Java驅(qū)動程序,這類型的驅(qū)動程序最大的好處是省去了在使用者計算機上安裝任何驅(qū)動程序的麻煩,只需在服務(wù)器端安裝好middleware,而middleware會負(fù)責(zé)所有存取數(shù)據(jù)庫時必要的轉(zhuǎn)換。

          本地協(xié)議的純 Java 驅(qū)動程序,:這類型的驅(qū)動程序是最成熟的JDBC驅(qū)動程序,不但無需在使用者計算機上安裝任何額外的驅(qū)動程序,也不需在服務(wù)器端安裝任何的中介程序(middleware),所有存取數(shù)據(jù)庫的操作,都直接由驅(qū)動程序來完成。

          JDBC API

          DriverManager

          Connection

          Connection

          Connection

          Statement

          PreparedStatement

          CallableStatement

          ResultSet

          ResultSet

          ResultSet

          Java.sql.Driver接口是所有JDBC驅(qū)動程序要實現(xiàn)的,不同的數(shù)據(jù)庫廠商提供不同的實現(xiàn)。然后再程序中由java.sql.DriverManager(驅(qū)動程序管理器類)來調(diào)用這些實現(xiàn)。

          首先加載驅(qū)動,通過調(diào)用Class類的forName()靜態(tài)方法,向其傳遞要加載的JDBC驅(qū)動的類名來完成。而注冊驅(qū)動,Driver 接口的驅(qū)動程序類都包含了靜態(tài)代碼塊,在這個靜態(tài)代碼塊中,會調(diào)用 DriverManager.registerDriver() 方法來注冊自身的一個實例。

          然后建立連接

          posted @ 2009-11-11 17:21 swedenborg 閱讀(116) | 評論 (0)編輯 收藏

          JDBC02之?dāng)?shù)據(jù)庫連接池(未完存稿)

           

          理解重點:

          是一個“緩沖池”,負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫連接,允許用用程序重復(fù)試用一個連接池中一個現(xiàn)有的數(shù)據(jù)庫連接,而不是重新建立一個。

          連接池通過設(shè)定最小連接數(shù)來初始化連接,通過最大連接數(shù)來限定當(dāng)前連接池能占有的最大連接數(shù)量。在此過程中,通過設(shè)定最大空閑連接數(shù)來釋放多余連接數(shù)并約束保留一定空閑連接數(shù),再通過設(shè)定最小空閑數(shù)來預(yù)防突然而來的鏈接(在最大連接數(shù)的限制下盡量滿足)。最后通后設(shè)定等待的最長時間來管理連接時間過長異常。

          Javax.sql.DateSource接口表示,其實現(xiàn)由服務(wù)器(如Weblogic,WebSphere,Tomcat)或一些開源組織提供(DBCP數(shù)據(jù)庫連接池,C3P0數(shù)據(jù)庫連接池)DataSource 通常被稱為數(shù)據(jù)源,它包含連接池和連接池管理兩個部分,習(xí)慣上也經(jīng)常把 DataSource 稱為連接池。

          使用DBCP連接池實現(xiàn),需增加兩jar包:Commons-dbcp.jar連接池的實現(xiàn);Commons-pool.jar連接池實現(xiàn)的依賴庫。Tomcat的連接池即采用此連接池實現(xiàn)。

          操作重點:

          BasicDataSource bds=null;

          //創(chuàng)建數(shù)據(jù)源對象

          bds=new BasicDataSource();

          //設(shè)置連接數(shù)據(jù)庫的驅(qū)動

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

          //設(shè)置連接數(shù)據(jù)庫的url

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

          //設(shè)置連接數(shù)據(jù)庫的用戶名

          bds.setUsername("root");

          //設(shè)置連接數(shù)據(jù)庫的密碼

          bds.setPassword("root");

          //設(shè)置連接池啟動時的初始值

          bds.setInitialSize(5);

          //設(shè)置連接池的最大值

          bds.setMaxActive(50);

          //最大空閑值.當(dāng)經(jīng)過一個高峰時間后,連接池可以慢慢將已經(jīng)

          //用不到的連接慢慢釋放一部分,一直減少到maxIdle為止

          bds.setMaxIdle(20);

          //最小空閑值.當(dāng)空閑的連接數(shù)少于該值時,連接池就會預(yù)申請一些連接,

          //以避免洪峰來時再申請而造成的性能開銷

          bds.setMinIdle(5);

          //設(shè)置等待時間,以毫秒為單位

          bds.setMaxWait(5000);

          Connection con=null;

          PreparedStatement pstmt=null;

          ResultSet rs=null;

          String sql="select id,name,sex from customer";

          try {

          con=bds.getConnection();

          pstmt=con.prepareStatement(sql);

          rs=pstmt.executeQuery();

          while(rs.next()){

          Integer id=rs.getInt(1);

          String name=rs.getString(2);

          String sex=rs.getString(3);

          System.out.println("id "+id +" name "+ name +"   sex "+sex );

          }

          } catch (SQLException e) {

               e.printStackTrace();

          }

          posted @ 2009-11-11 17:19 swedenborg 閱讀(221) | 評論 (0)編輯 收藏

          2009年7月29日

          基于理解的java學(xué)習(xí)筆記之最最基礎(chǔ)部分

               摘要: 最最基礎(chǔ)部分 保留關(guān)鍵字:goto、const 增加關(guān)鍵字:assert、enum public class SimpleDemo02{// 聲明一個類,類名稱的命名規(guī)范:所有單詞的首字母大寫        public static void main(String args[]){ // 主方法  &nb...  閱讀全文

          posted @ 2009-07-29 18:20 swedenborg 閱讀(312) | 評論 (1)編輯 收藏

          僅列出標(biāo)題  
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 盐边县| 阳山县| 百色市| 全南县| 安顺市| 洪泽县| 延川县| 徐汇区| 扎赉特旗| 霍邱县| 麦盖提县| 资源县| 南华县| 定日县| 承德市| 江都市| 西华县| 恩平市| 定日县| 洪湖市| 曲麻莱县| 阿鲁科尔沁旗| 威远县| 海口市| 剑川县| 临桂县| 商城县| 南昌市| 滦平县| 延边| 拜城县| 韶山市| 满城县| 施甸县| 信宜市| 阿勒泰市| 普格县| 民勤县| 桐乡市| 来安县| 蕲春县|