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

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

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

    coolfiry

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

    WINIZX的JDBC學習筆記

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

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

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

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

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

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

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

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

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

    10.注冊一個driver的方法:
    答:1)?使用類loader(裝載;實例化;注冊入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)?實例化一個Driver
    ???????a.?Driver?drv?=?new?COM.cloudscape.core.RmiJdbcDriver();

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

    1.?建立一個到數(shù)據(jù)庫的連接(步驟二)
    答:DriverManager調(diào)用getConnection(urlString)方法,實際上調(diào)用的是driver的connect(urlString)方法;
    ????1)?當一個driver肯定地對應到一個數(shù)據(jù)庫URL,DriverManager建立一個連接;
    ????2)?當沒有driver匹配,返回null然后下一個driver被檢驗;
    ????3)?假如沒有建立連接,拋出一個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)建一個到指定Driver實例的直接調(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)建一個Statement(步驟三)
    答:1)?Statement的三個接口:
    ???????a.?Statement;
    ???????b.?PreparedStatement(繼承自Statement);
    ???????c.?CallableStatement(繼承自PreparedStatement);
    ????2)?使用方法Connection.createStatement()得到一個Statement對象

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

    6.?CallableStatement對象
    答:1)?通過CallableStatement調(diào)用數(shù)據(jù)庫中的存儲過程;
    ????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
    ????------------------------------------------------------------------------------
    ????寫代碼位置???|???客戶端????????????|?客戶端????????????????????|??服務器端
    ????------------------------------------------------------------------------------
    ????寫代碼位置???|???客戶端????????????|?服務器端??????????????????|??服務器端
    ????------------------------------------------------------------------------------
    ????編寫代碼技術(shù)?|Java,SQL操作????????|Java,SQL操作??????????????|??數(shù)據(jù)庫的程序語言,如PL/SQL
    ????------------------------------------------------------------------------------
    ????可配置性?????|???高????????????????|第一次高,以后低???????????|??低
    ????------------------------------------------------------------------------------
    ????可移植性?????|???高????????????????|假設支持PreparedStatement的話高????
    ????------------------------------------------------------------------------------
    ????傳輸效率?????|???低????????????????|第一次低,以后高???????????|??高

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

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

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

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

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

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

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

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

    2.?事務處理
    答:1)?一系列的動作作為一個不可分的操作;
    ????2)?JDBC?API中使用事務處理步驟:
    ???????a.?用false作為參數(shù)調(diào)用setAutoCommit方法;
    ???????b.?執(zhí)行一或多個關(guān)于數(shù)據(jù)庫的操作;
    ???????c.?調(diào)用commit方法完成改變;
    ???????d.?恢復上次提交后的改變,調(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)?設置隔離級別方法:setTransactionIsolation
    ????2)?隔離級別靜態(tài)變量
    ???????a.?TRANSACTION_NONE:只讀的數(shù)據(jù)字典;
    ???????b.?TRANSACTION_READ_UNCOMMITTED:只讀未提交數(shù)據(jù);
    ???????c.?TRANSACTION_READ_COMMITTED:只讀未提交數(shù)據(jù);
    ???????d.?TRANSACTION_REPEATABLE_READ:重復讀取數(shù)據(jù);
    ???????e.?TRANSACTION_SERIALIZABLE:無論做什么操作都不許別人動。
    ????3)?示例:con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);

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

    5.?JDBC?2.0標準擴展
    答:1)?JNDI(Java?Naming?and?Directory?Interface):?解決離散狀態(tài)下Object的查找;
    ????2)?連接池:在內(nèi)存中保存了一個數(shù)據(jù)庫連接,不需要注冊驅(qū)動器,提高性能的重要方法。
    主站蜘蛛池模板: 一级毛片不卡片免费观看| 欧洲乱码伦视频免费| 无码人妻精品中文字幕免费| 免费人成网站在线播放| 久久久久亚洲AV无码专区体验| 亚洲愉拍一区二区三区| 成人片黄网站色大片免费观看cn| 免费视频爱爱太爽了| 久久久久久久亚洲精品| 2020天堂在线亚洲精品专区| 国产午夜精品理论片免费观看 | 美女啪啪网站又黄又免费| 亚洲免费观看视频| 亚洲国产精品一区二区三区久久| 91嫩草亚洲精品| 日本免费电影一区二区| 一区二区三区亚洲视频| 亚洲日韩国产二区无码| 亚洲免费在线视频播放| 亚洲va在线va天堂成人| 在线看片无码永久免费aⅴ| 亚洲一级在线观看| 91禁漫免费进入| 亚洲AV无码专区亚洲AV伊甸园| 三年片在线观看免费观看大全中国| 国产卡一卡二卡三免费入口 | 99久久99久久精品免费观看 | 亚洲一区二区在线视频| 18国产精品白浆在线观看免费| 亚洲VA中文字幕无码一二三区| 99久久人妻精品免费一区| 亚洲精品无码久久久久久| 久久久久无码专区亚洲av| 免费看又黄又无码的网站| 亚洲国产AV无码一区二区三区 | 亚洲人成国产精品无码| 亚洲AV永久无码精品一福利| 成人免费无毒在线观看网站| 国产亚洲福利在线视频| 四虎影院免费在线播放| 亚洲国产AV一区二区三区四区|