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

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

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

    拼搏的人生

    拼搏在繁華的都市

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      7 隨筆 :: 13 文章 :: 6 評(píng)論 :: 0 Trackbacks
    JDBC 2.0比1.0有了一些不同,體現(xiàn)在四個(gè)比較明顯的方面:
    1>. ResutlSet對(duì)象中的Cursor能夠自由上下移動(dòng)
    2>. 能直接使用Java程序語(yǔ)言來更新DB表里的內(nèi)容,而不需要額外寫SQL語(yǔ)法
    3>. 可以一次傳送許多SQL語(yǔ)句到DB執(zhí)行----Batch
    4>. 新增2個(gè)數(shù)據(jù)類型(BLOB和CLOB)
    ?? 我們知道在JDBC 1.0時(shí),只要用 connection.createStatement()就能取得Statement()對(duì)象.不過在2.0中多的createStatement()
    多了兩個(gè)參數(shù)值,需要我們自己來定義它.
    public Statement createStatement(int resultSetType,
    ???????????????????????????????? int resultSetConcurrency)throws SQLException
    ?? 第一個(gè)參數(shù)resultSetType用來設(shè)定ResultSet對(duì)象中的光標(biāo)是否可以自由上下移動(dòng),它的值有三種,TYPE_FORWARD_ONLY,TYPE_SCROLL_SENSITIVE,
    TYPE_SCROLL_INSENSITIVE.若為TYPE_FORWARD_ONLY就表示和1.0一樣只能用next()方法;然后后兩者可以讓Cursor隨便的自由移動(dòng),不過,
    它們兩者最大的區(qū)別在于:當(dāng)ResutlSet中的值有改變時(shí),TYPE_SCROLL_SENSITIVE能取得修改后的值,而TYPE_SCROLL_INSENSITIVE則不能.
    ? 第而個(gè)參數(shù)resultSetConcurrentcy,主要是設(shè)定ResultSet對(duì)象是只讀(read-only)還是可以改變的(updateable),它可能的值有兩種,
    CONCUR_READ_ONLY或者是CONCUR_UPDATE.若設(shè)置為CONCUR_READ_ONLY,ResultSet對(duì)象和1.0一樣;若為CONCUR_UPDATEABLE,那么就可以用
    ResultSet對(duì)象執(zhí)行數(shù)據(jù)庫(kù)的修改,增加和移除功能.for example:
    先看功能和1.0一樣的寫法:
    Statement stmt=con.createStatement(ResultSet.TYPE_FORWARD_ONLY,
    ?????????????????????????????????? ResultSet.CONCUR_READ_ONLY);
    RestultSet rs=stmt.executeQuery("select ename,empno from emp");
    while(rs.next())
    {
    ?? String name=rs.getString("ename");
    ?? int empno=rs.getInt("empno");
    ?? System.out.println("name="+name+","+"number="+empno);
    }
    輸出結(jié)果為:
    name=feiyang,number=1190
    name=jack,?? number=1230
    name=BillGates number=12
    ...........
    再看看下面這個(gè):
    Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
    ?????????????????????????????????? ResultSet.CONCUR_READ_ONLY);
    RestultSet rs=stmt.executeQuery("select ename,empno from emp");
    rs.afterLast();
    while(rs.previous())
    {
    ?? String name=rs.getString("ename");
    ?? int empno=rs.getInt("empno");
    ?? System.out.println("name="+name+","+"number="+empno);
    }
    輸出結(jié)果為:
    name=BillGates number=12
    name=jack,?? number=1230
    name=feiyang,number=1190
    .............
    這和上面第一有點(diǎn)不同的是順序顛倒了,這是因?yàn)槲覀兪褂昧藃s.afterLast()這個(gè)方法.其實(shí)2.0中還有很多方法,如下:
    rs.absolute(-1); //表示cursor在最后一筆數(shù)據(jù),即 rs.last()
    rs.absolute(1);? //表示cursor在第一筆數(shù)據(jù),即rs.first()
    rs.absolute(n);? //表示cursor在第N筆數(shù)據(jù)
    假使我們目前有1000筆數(shù)據(jù),取得第997筆
    rs.absolute(-4);
    還有一個(gè)方法和absolute很相像,那就是relative(),
    rs.absolute(5); //表示第五筆數(shù)據(jù)
    ......
    rs.relative(-3);? //表示cursor目前在第二筆數(shù)據(jù)
    .......
    rs.relative(1);? //cursor目前在第三筆數(shù)據(jù)
    看看怎么用ResultSet對(duì)象執(zhí)行更新數(shù)據(jù)庫(kù)動(dòng)作
    ?? 要讓ResultSet對(duì)象執(zhí)行更新數(shù)據(jù)庫(kù)的動(dòng)作,首先在聲明Statement對(duì)象時(shí),參數(shù)必須設(shè)置為TYPE_SCROLL_SENSITIVE和
    CUNCOR_UPDATEABLE.
    Statement stmt=con.createStatment(RestultSet.TYPE_SCROLL_SENSITIVE,
    ????????????????????????????????? ResultSet.CONCUR_UPDATEABLE);
    ResultSet rs=stmt.executeQuery("select ename,empno from emp);
    rs.last();
    rs.updateInt("empno",2230);
    rs.cancelRowUpdates();
    rs.updateInt("empno",1213);
    rs.updateRow();
    新增數(shù)據(jù)到數(shù)據(jù)庫(kù)
    Statement stmt=con.createStatment(RestultSet.TYPE_SCROLL_SENSITIVE,
    ????????????????????????????????? ResultSet.CONCUR_UPDATEABLE);
    ResultSet rs=stmt.executeQuery("select * from emp);
    rs.moveToInsertRow();
    rs.updateInt("empno",2230);
    rs.updateString("ename","feiyang");
    rs.updateString("job","clerk");
    rs.updateFloat("sal",123456.5);
    rs.insertRow();
    刪除數(shù)據(jù)
    Statement stmt=con.createStatment(RestultSet.TYPE_SCROLL_SENSITIVE,
    ????????????????????????????????? ResultSet.CONCUR_UPDATEABLE);
    ResultSet rs=stmt.executeQuery("select * from emp);
    rs.absolute(4);
    rs.deleteRow();
    依次執(zhí)行多條SQL語(yǔ)句
    Statement stmt=con.createStatment();
    int[] rows;
    stmt.addBatch("insert into emp values('feiyang','123456')");
    stmt.addBatch("insert into offcie values('employee','Shanghai')");
    rows=stmt.executeBatch();
    當(dāng)執(zhí)行大量數(shù)據(jù)的時(shí)候?yàn)榱藬?shù)據(jù)的完整性,建議使用Transaction
    eg:
    con.setAutoCommit(false);
    Statement stmt=con.createStatement();
    int[] rows;
    stmt.addBatch("1...........");
    stmt.addBatch("2...........");
    stmt.addBatch("3...........");
    stmt.addBatch("4...........");
    stmt.addBatch("5...........");
    stmt.addBatch("6...........");
    rows=stmt.executeBatch();
    con.commit();
    在JDBC2.0中新增加BLOB和CLOB兩個(gè)數(shù)據(jù)類型
    BOLB指的是二進(jìn)制大型對(duì)象(Binary Large Object),CLOB指的是字符大型對(duì)象(Character Large Object).它們用來處理大型
    的數(shù)據(jù)類型,他們分別代表大量的二進(jìn)制數(shù)據(jù)和文字?jǐn)?shù)據(jù).
    posted on 2006-05-10 12:25 Dalston.Young 閱讀(453) 評(píng)論(0)  編輯  收藏 所屬分類: Web組件

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 精品免费久久久久久久| 亚洲中文字幕无码久久| 国产特黄特色的大片观看免费视频 | 在线看片免费人成视频福利| 亚洲一区精品无码| 中文在线免费视频| 久久精品视频亚洲| 中文字幕亚洲免费无线观看日本| 久久精品国产亚洲AV无码娇色| 久久精品无码专区免费青青| 久久久久亚洲AV成人无码网站| 中国亚洲呦女专区| 国产精品国产免费无码专区不卡 | 亚洲成a人无码av波多野按摩| 免费无遮挡无遮羞在线看| 亚洲综合色区在线观看| 在线观看人成视频免费无遮挡| 亚洲无线电影官网| 中文字幕人成无码免费视频 | 亚洲a∨国产av综合av下载| 国产免费69成人精品视频| 曰韩无码AV片免费播放不卡| 亚洲成色www久久网站夜月| 在线观看免费av网站| 亚洲乱码日产精品一二三| 亚洲国产91精品无码专区| a级精品九九九大片免费看| 亚洲视频一区在线观看| 韩国欧洲一级毛片免费| 有码人妻在线免费看片| 精品亚洲成a人片在线观看| 成年美女黄网站18禁免费 | 日韩少妇内射免费播放| 亚洲av一综合av一区| 最近2019中文字幕mv免费看 | 两性色午夜免费视频| 亚洲成AV人综合在线观看 | 亚洲国产精品无码一线岛国| 精品香蕉在线观看免费| 又大又硬又粗又黄的视频免费看| 久久亚洲精品人成综合网|