2009年7月29日

          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編寫的一組類和接口組成,其接口的實(shí)現(xiàn)由各個數(shù)據(jù)庫廠商來完成。

          JDBC分類:

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

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

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

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

          JDBC API

          DriverManager

          Connection

          Connection

          Connection

          Statement

          PreparedStatement

          CallableStatement

          ResultSet

          ResultSet

          ResultSet

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

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

          然后建立連接

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

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

           

          理解重點(diǎn):

          是一個“緩沖池”,負(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接口表示,其實(shí)現(xiàn)由服務(wù)器(如Weblogic,WebSphere,Tomcat)或一些開源組織提供(DBCP數(shù)據(jù)庫連接池,C3P0數(shù)據(jù)庫連接池)DataSource 通常被稱為數(shù)據(jù)源,它包含連接池和連接池管理兩個部分,習(xí)慣上也經(jīng)常把 DataSource 稱為連接池。

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

          操作重點(diǎ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)編輯 收藏

          基于理解的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)編輯 收藏

          <2009年7月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 余江县| 涿州市| 绍兴市| 成武县| 宿迁市| 黄冈市| 奎屯市| 滦平县| 浦江县| 嵊泗县| 沐川县| 罗江县| 秦安县| 荔浦县| 龙门县| 南康市| 天津市| 略阳县| 紫金县| 淮南市| 东城区| 石首市| 克什克腾旗| 额尔古纳市| 镇宁| 东安县| 乌鲁木齐县| 舞钢市| 东乡族自治县| 普格县| 哈尔滨市| 谢通门县| 海宁市| 汉源县| 伊吾县| 巴彦县| 于都县| 无为县| 图们市| 上饶县| 利津县|