<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    coolfiry

    認(rèn)認(rèn)真真做人,兢兢業(yè)業(yè)做事!
    posts - 39, comments - 17, trackbacks - 0, articles - 0

    WINIZX的JDBC學(xué)習(xí)筆記

    Posted on 2006-11-03 10:14 Coolfiry 閱讀(248) 評(píng)論(0)  編輯  收藏 所屬分類: Java
    JDBC學(xué)習(xí)筆記
    2004-9-13?????星期一?????小雨

    l.?連接到數(shù)據(jù)庫(kù)的方法
    答:1)?ODBC(Open?Database?Connectivity)
    ???????一個(gè)以C語(yǔ)言為基礎(chǔ)訪問SQL為基礎(chǔ)數(shù)據(jù)庫(kù)引擎的接口,它提供了一致的接口用于和數(shù)據(jù)庫(kù)溝通以及訪問數(shù)據(jù)。
    ????2)?JDBC
    ???????Java版本的ODBC

    2.?JDBC應(yīng)用編程接口
    答:JDBC應(yīng)用編程接口是:
    ????1)?標(biāo)準(zhǔn)的數(shù)據(jù)訪問接口,可以連到不同的數(shù)據(jù)庫(kù);
    ????2)?JAVA編程語(yǔ)言的一組類和接口。
    ????JDBC應(yīng)用編程接口能夠:
    ????1)?連接到數(shù)據(jù)庫(kù);
    ????2)?發(fā)SQL查詢字符串到數(shù)據(jù)庫(kù);
    ????3)?處理結(jié)果。
    ????JDBC應(yīng)用編程接口有二個(gè)主要的部分:
    ????1)?JAVA應(yīng)用程序開發(fā)接口面向JAVA應(yīng)用程序開發(fā)者;
    ????2)?JDBC驅(qū)動(dòng)程序開發(fā)接口
    ????
    3.?JDBC?Driver
    答:1)?一大堆實(shí)現(xiàn)了JDBC類和接口的類;
    ????2)?提供了一個(gè)實(shí)現(xiàn)java.sql.Driver接口的類。

    4.?JDBC?Driver的四種類型
    答:1)?JDBC-ODBC橋
    ????由ODBC驅(qū)動(dòng)提供JDBC訪問
    ????2)?本地API
    ????部分Java?driver把JDBC調(diào)用轉(zhuǎn)化成本地的客戶端API
    ????3)?JDBC-net
    ????純的Java?driver,將JDBC調(diào)用轉(zhuǎn)入DBMS,與網(wǎng)絡(luò)協(xié)議無關(guān)。然后通過服務(wù)器將調(diào)用轉(zhuǎn)為DBMS協(xié)議。
    ????4)?本地協(xié)議
    ????純的java?driver,將JDBC調(diào)用直接轉(zhuǎn)為DBMS使用的網(wǎng)絡(luò)協(xié)議

    5.?JDBC開發(fā)者接口
    答:1)?java.sql--java?2平臺(tái)下JDBC的主要功能,標(biāo)準(zhǔn)版(J2SE)
    ????2)?javax.sql--java?2平臺(tái)下JDBC增強(qiáng)功能,企業(yè)版(J2EE)

    6.?使用URL確認(rèn)數(shù)據(jù)庫(kù)
    答:我們使用URL來確定一個(gè)數(shù)據(jù)庫(kù)(正確的Driver,正確的主機(jī),正確的協(xié)議,正確的協(xié)議,正確的用戶名和密碼);
    ????語(yǔ)法:protocol:subprotocol:subname
    ????范例:jdbc:db2:MyTest
    ??????????jdbc:db2://localhost:6789/MyTest

    7.?javax.sql包JDBC2.0的增強(qiáng)功能
    答:1)?數(shù)據(jù)源接口;
    ????2)?連接池;
    ????3)?分布式交易;
    ????4)?行集;

    8.?創(chuàng)建一個(gè)基本的JDBC應(yīng)用
    答:1)?步驟一:注冊(cè)一個(gè)driver;
    ????2)?步驟二:建立一個(gè)到數(shù)據(jù)庫(kù)的連接;
    ????3)?步驟三:創(chuàng)建一個(gè)statement;
    ????4)?步驟四:執(zhí)行SQL語(yǔ)句;
    ????5)?步驟五:處理結(jié)果;
    ????6)?步驟六:關(guān)閉JDBC對(duì)象

    9.?注冊(cè)一個(gè)Driver(步驟一)
    答:1)?driver被用于連接到數(shù)據(jù)庫(kù);
    ????2)?JDBC應(yīng)用編程接口使用第一個(gè)能成功連接到給定URL的driver;
    ????3)?在同一時(shí)間可以裝載多個(gè)driver

    10.注冊(cè)一個(gè)driver的方法:
    答:1)?使用類loader(裝載;實(shí)例化;注冊(cè)入DriverManager)
    ???????a.?Class.forName("Com.ibm.db2.jdbc.app.DB2Driver");
    ???????b.?Class.forName("Com.ibm.db2.jdbc.net.DB2Driver");
    ???????c.?Class.forName("Com.microsoft.jdbc.sqlServer.SQLServerDriver);
    ???????d.?Class.forName("oracl.jdbc.driver.OracleDriver");
    ???????e.?Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    ????2)?實(shí)例化一個(gè)Driver
    ???????a.?Driver?drv?=?new?COM.cloudscape.core.RmiJdbcDriver();

    2004-9-14?????星期二?????陰

    1.?建立一個(gè)到數(shù)據(jù)庫(kù)的連接(步驟二)
    答:DriverManager調(diào)用getConnection(urlString)方法,實(shí)際上調(diào)用的是driver的connect(urlString)方法;
    ????1)?當(dāng)一個(gè)driver肯定地對(duì)應(yīng)到一個(gè)數(shù)據(jù)庫(kù)URL,DriverManager建立一個(gè)連接;
    ????2)?當(dāng)沒有driver匹配,返回null然后下一個(gè)driver被檢驗(yàn);
    ????3)?假如沒有建立連接,拋出一個(gè)SQLExcepiton異常

    2.?經(jīng)常使用的一些JDBC?URL
    答:1)?JDBC-ODBC:?jdbc:odbc:<DB>
    ????2)?Oracle:?jdbc:oracle:oci:@<sid>?or?jdbc:oracle:thin:@<SID>
    ????3)?Weblogic?MS-SQL:?jdbc:weblogic:mssqlserver4:<DB>@<HOST>:<PORT>
    ????4)?DB2:?jdbc:db2:MyTest?or?jdbc.db2://localhost:6789/MyTest(需要用戶名和密碼)

    3.?Driver連接方法
    答:1)?創(chuàng)建一個(gè)到指定Driver實(shí)例的直接調(diào)用;
    ????2)?避免一般訪問的問題
    ???????Driver?drv?=?new?COM.ibm.db2.jdbc.app.DB2Driver();
    ???????Connection?con?=?null;
    ???????try?{con?=?drv.connect("jdbc:db2:MyTest",new?Properties())}
    ???????catch(SQLException?e){}

    4.?創(chuàng)建一個(gè)Statement(步驟三)
    答:1)?Statement的三個(gè)接口:
    ???????a.?Statement;
    ???????b.?PreparedStatement(繼承自Statement);
    ???????c.?CallableStatement(繼承自PreparedStatement);
    ????2)?使用方法Connection.createStatement()得到一個(gè)Statement對(duì)象

    5.?PreparedStatement對(duì)象
    答:1)?調(diào)用ProparedStatement比statement更為高效;
    ????2)?繼承自Statement;
    ????3)?語(yǔ)法:PreparedStatement?pstm?=?connection.prepareStatement(sqlString);

    6.?CallableStatement對(duì)象
    答:1)?通過CallableStatement調(diào)用數(shù)據(jù)庫(kù)中的存儲(chǔ)過程;
    ????2)?繼承自PreparedStatement;
    ????3)?CallableStatement?cstm?=?connection.prepareCall("{call?return_student[?,?]}");
    ???????cstm.setString(1,"8623034");
    ???????cstm.registerOutparameter(2,?Types.REAL);
    ???????cstm.execute();
    ???????float?gpa?=?cstm.getFloat(2);

    7.?Statement接口的比較
    答:?????????????|?Statement???????????|?PreparedStatement?????????|??CallableStatement
    ????------------------------------------------------------------------------------
    ????寫代碼位置???|???客戶端????????????|?客戶端????????????????????|??服務(wù)器端
    ????------------------------------------------------------------------------------
    ????寫代碼位置???|???客戶端????????????|?服務(wù)器端??????????????????|??服務(wù)器端
    ????------------------------------------------------------------------------------
    ????編寫代碼技術(shù)?|Java,SQL操作????????|Java,SQL操作??????????????|??數(shù)據(jù)庫(kù)的程序語(yǔ)言,如PL/SQL
    ????------------------------------------------------------------------------------
    ????可配置性?????|???高????????????????|第一次高,以后低???????????|??低
    ????------------------------------------------------------------------------------
    ????可移植性?????|???高????????????????|假設(shè)支持PreparedStatement的話高????
    ????------------------------------------------------------------------------------
    ????傳輸效率?????|???低????????????????|第一次低,以后高???????????|??高

    8.?執(zhí)行SQL?Statement(步驟四)
    答:通過接口方法將SQL語(yǔ)句傳輸至?認(rèn)的數(shù)據(jù)庫(kù)連接,返回結(jié)果可能是一個(gè)數(shù)據(jù)表,可以通過java.sql.ResultSet訪問。
    ????1)?Statement的接口方法:
    ????a.?executeQuery(sqlString):?執(zhí)行給定的SQL聲明,返回一個(gè)結(jié)果集(ResultSet)對(duì)象;
    ????b.?executeUpdate(sqlString):?執(zhí)行給定的SQL聲明,可以是INSERT、UPDATE或DELETE聲明,也可以是SQL?DDL聲明;
    ????c.?execute(sqlString):?執(zhí)行給定的SQL聲明。

    9.?處理結(jié)果(步驟五)
    答:1)?使用結(jié)果集(ResultSet)對(duì)象的訪問方法獲取數(shù)據(jù);
    ???????a.?next():下一個(gè)記錄
    ???????b.?first():第一個(gè)記錄
    ???????c.?last():最后一個(gè)記錄
    ???????d.?previous():上一個(gè)記錄
    ????2)?通過字段名或索引取得數(shù)據(jù)
    ????3)?結(jié)果集保持了一個(gè)指向了當(dāng)前行的指針,初始化位置為第一個(gè)記錄前。

    10.?關(guān)閉JDBC對(duì)象(步驟六)
    答:1)?首先關(guān)閉記錄集;
    ????2)?其次關(guān)閉聲明;
    ????3)?最后關(guān)閉連接對(duì)象。

    11.?數(shù)據(jù)表和類對(duì)應(yīng)的三種關(guān)系:
    答:1)?一個(gè)表對(duì)應(yīng)一個(gè)類;
    ????2)?一個(gè)表對(duì)應(yīng)相關(guān)類;
    ????3)?一個(gè)表對(duì)應(yīng)整個(gè)類關(guān)系層

    12.?類間關(guān)系的幾種表設(shè)計(jì):
    答:1)?多對(duì)一,
    ????2)?一對(duì)一:?
    ????3)?一對(duì)多:
    ????4)?多對(duì)多:

    13.?SQL數(shù)據(jù)類型及其相應(yīng)的Java數(shù)據(jù)類型
    答:SQL數(shù)據(jù)類型?????????????????????Java數(shù)據(jù)類型??????????????說明
    ????------------------------------------------------------------------
    ????INTEGER或者INT??????????????????int?????????????????????通常是個(gè)32位整數(shù)
    ????SMALLINT????????????????????????short???????????????????通常是個(gè)16位整數(shù)
    ????NUMBER(m,n)?DECIMAL(m,n)????????Java.sql.Numeric????????合計(jì)位數(shù)是m的定點(diǎn)十進(jìn)制數(shù),小數(shù)后面有n位數(shù)
    ????DEC(m,n)????????????????????????Java.sql.Numeric????????合計(jì)位數(shù)是m的定點(diǎn)十進(jìn)制數(shù),小數(shù)后面有n位數(shù)
    ????FLOAT(n)????????????????????????double??????????????????運(yùn)算精度為n位二進(jìn)制數(shù)的浮點(diǎn)數(shù)
    ????REAL????????????????????????????float???????????????????通常是32位浮點(diǎn)數(shù)
    ????DOUBLE??????????????????????????double??????????????????通常是64位浮點(diǎn)數(shù)
    ????CHARACTER(n)或CHAR(n)???????????String??????????????????長(zhǎng)度為n的固定長(zhǎng)度字符串
    ????VARCHAR(n)??????????????????????String??????????????????最大長(zhǎng)度為n的可變長(zhǎng)度字符串
    ????BOOLEAN?????????????????????????boolean?????????????????布爾值
    ????DATE????????????????????????????Java.sql.Date???????????根據(jù)具體設(shè)備而實(shí)現(xiàn)的日歷日期
    ????TIME????????????????????????????Java.sql.Time???????????根據(jù)具體設(shè)備而實(shí)現(xiàn)的時(shí)戳
    ????TIMESTAMP???????????????????????Java.sql.Timestamp??????根據(jù)具體設(shè)備而實(shí)現(xiàn)的當(dāng)日日期和時(shí)間
    ????BLOB????????????????????????????Java.sql.Blob???????????二進(jìn)制大型對(duì)象
    ????CLOB????????????????????????????Java.sql.Clob???????????字符大型對(duì)象
    ????ARRAY???????????????????????????Java.sql.Array
    ????

    2004-9-15?????星期三??????陰

    1.?元數(shù)據(jù)
    答:關(guān)于數(shù)據(jù)的信息,例如類型或者容量。通過JDBC?API可以訪問:
    ????1)?數(shù)據(jù)庫(kù)元數(shù)據(jù);
    ???????a.?使用connection.getMetadata方法返回DataMetaData引用
    ???????b.?能夠使用isReadOnly此類方法獲取信息
    ????2)?結(jié)果集元數(shù)據(jù);
    ???????a.?使用ResultSet.getMetadata方法返回ResultSetMetaData引用
    ???????b.?能夠使用getColumnCount此類方法獲取信息

    2.?事務(wù)處理
    答:1)?一系列的動(dòng)作作為一個(gè)不可分的操作;
    ????2)?JDBC?API中使用事務(wù)處理步驟:
    ???????a.?用false作為參數(shù)調(diào)用setAutoCommit方法;
    ???????b.?執(zhí)行一或多個(gè)關(guān)于數(shù)據(jù)庫(kù)的操作;
    ???????c.?調(diào)用commit方法完成改變;
    ???????d.?恢復(fù)上次提交后的改變,調(diào)用rollback方法.

    ???????try
    ???????{
    ??????????con.setAutoCommit(false);
    ??????????Statement?stm?=?con.createStatement();
    ??????????stm.executeUpdate("insert?into?student(name,?age,?gpa)?values('gzhu',?30,?4.8)");
    ??????????stm.commit();
    ???????}
    ???????catch(SQLException?e)
    ???????{
    ??????????try
    ??????????{
    ?????????????con.rollback();
    ??????????}
    ??????????catch(Exception?e)
    ??????????{
    ??????????}
    ???????}

    3.?并發(fā)控制
    答:1)?設(shè)置隔離級(jí)別方法:setTransactionIsolation
    ????2)?隔離級(jí)別靜態(tài)變量
    ???????a.?TRANSACTION_NONE:只讀的數(shù)據(jù)字典;
    ???????b.?TRANSACTION_READ_UNCOMMITTED:只讀未提交數(shù)據(jù);
    ???????c.?TRANSACTION_READ_COMMITTED:只讀未提交數(shù)據(jù);
    ???????d.?TRANSACTION_REPEATABLE_READ:重復(fù)讀取數(shù)據(jù);
    ???????e.?TRANSACTION_SERIALIZABLE:無論做什么操作都不許別人動(dòng)。
    ????3)?示例:con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);

    4.?JDBC?2.0?應(yīng)用程序編程接口增強(qiáng)功能
    答:1)?ResultSet增強(qiáng):
    ???????a.?可以回卷;
    ???????b.?可以修改;
    ???????設(shè)置示例:Statement?stm?=?con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    ????2)?Statement增強(qiáng)了批量修改能力(batch?updates);
    ????3)?更高級(jí)的數(shù)據(jù)類型(例:Struct)。

    5.?JDBC?2.0標(biāo)準(zhǔn)擴(kuò)展
    答:1)?JNDI(Java?Naming?and?Directory?Interface):?解決離散狀態(tài)下Object的查找;
    ????2)?連接池:在內(nèi)存中保存了一個(gè)數(shù)據(jù)庫(kù)連接,不需要注冊(cè)驅(qū)動(dòng)器,提高性能的重要方法。
    主站蜘蛛池模板: 国产亚洲精品国产| 亚洲性猛交XXXX| 亚洲精品宾馆在线精品酒店| 最近最新高清免费中文字幕| 婷婷精品国产亚洲AV麻豆不片| 国产一级a毛一级a看免费视频 | 免费看a级黄色片| 亚洲一线产品二线产品| 午夜宅男在线永久免费观看网| 亚洲一区二区三区久久| 亚洲免费综合色在线视频| 豆国产96在线|亚洲| 免费人成网站在线播放| 皇色在线免费视频| 国产亚洲成av人片在线观看 | 成人a毛片视频免费看| 亚洲日本va午夜中文字幕久久| 污污免费在线观看| 亚洲人成网77777色在线播放| 亚洲免费人成在线视频观看| 亚洲AV成人一区二区三区AV| 午夜国产精品免费观看 | 国产亚洲精AA在线观看SEE| 一级做a爰全过程免费视频| 亚洲人成在线播放| 国产精品四虎在线观看免费| h视频在线免费观看| 麻豆亚洲AV永久无码精品久久| 无人影院手机版在线观看免费| 美国毛片亚洲社区在线观看| 亚洲尤码不卡AV麻豆| 综合在线免费视频| 羞羞漫画页面免费入口欢迎你| 亚洲精品成人片在线观看精品字幕 | 美女被cao网站免费看在线看| 91精品国产亚洲爽啪在线影院| 性做久久久久久免费观看| 一级毛片人与动免费观看| 1区1区3区4区产品亚洲| 日本免费人成黄页在线观看视频| 国产中文字幕在线免费观看|