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

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

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

    隨筆 - 100  文章 - 50  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    我收藏的一些文章!

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    一、區(qū)別和定義

          LONG: 可變長的字符串數(shù)據(jù),最長2G,LONG具有VARCHAR2列的特性,可以存儲長文本一個表中最多一個LONG列
      LONG RAW: 可變長二進制數(shù)據(jù),最長2G
      CLOB:  字符大對象Clob 用來存儲單字節(jié)的字符數(shù)據(jù)
      NCLOB: 用來存儲多字節(jié)的字符數(shù)據(jù)
      BLOB: 用于存儲二進制數(shù)據(jù)
      BFILE: 存儲在文件中的二進制數(shù)據(jù),這個文件中的數(shù)據(jù)只能被只讀訪。但該文件不包含在數(shù)據(jù)庫內(nèi)。

            bfile字段實際的文件存儲在文件系統(tǒng)中,字段中存儲的是文件定位指針.bfile對oracle來說是只讀的,也不參與事務(wù)性控制和數(shù)據(jù)恢復(fù).
      
      CLOB,NCLOB,BLOB都是內(nèi)部的LOB(Large Object)類型,最長4G,沒有LONG只能有一列的限制

      要保存圖片、文本文件、Word文件各自最好用哪種數(shù)據(jù)類型?
      --BLOB最好,LONG RAW也不錯,但Long是oracle將要廢棄的類型,因此建議用BLOB。

    二、操作

    1、 get

    CLOB

     

    java 代碼
    1. //獲得數(shù)據(jù)庫連接   
    2.     Connection con = ConnectionFactory.getConnection();   
    3.     con.setAutoCommit(false);   
    4.     Statement st = con.createStatement();   
    5.     //不需要“for update”   
    6.     ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1");   
    7.     if (rs.next())   
    8.     {   
    9.         java.sql.Clob clob = rs.getClob("CLOBATTR");   
    10.         Reader inStream = clob.getCharacterStream();   
    11.         char[] c = new char[(int) clob.length()];   
    12.         inStream.read(c);   
    13.         //data是讀出并需要返回的數(shù)據(jù),類型是String   
    14.         data = new String(c);   
    15.         inStream.close();   
    16.     }   
    17.     inStream.close();   
    18.     con.commit();   
    19.     con.close();   
    20.    

     

    BLOB
    java 代碼
    1. //獲得數(shù)據(jù)庫連接   
    2.     Connection con = ConnectionFactory.getConnection();   
    3.     con.setAutoCommit(false);   
    4.     Statement st = con.createStatement();   
    5.     //不需要“for update”   
    6.     ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1");   
    7.     if (rs.next())   
    8.     {   
    9.         java.sql.Blob blob = rs.getBlob("BLOBATTR");   
    10.         InputStream inStream = blob.getBinaryStream();   
    11.         //data是讀出并需要返回的數(shù)據(jù),類型是byte[]   
    12.         data = new byte[input.available()];   
    13.         inStream.read(data);   
    14.         inStream.close();   
    15.     }   
    16.     inStream.close();   
    17.     con.commit();   
    18.     con.close();   

     

    2、 put

    CLOB
    java 代碼
    1. //獲得數(shù)據(jù)庫連接   
    2.     Connection con = ConnectionFactory.getConnection();   
    3.     con.setAutoCommit(false);   
    4.     Statement st = con.createStatement();   
    5.     //插入一個空對象empty_clob()   
    6.     st.executeUpdate("insert into TESTCLOB (ID, NAME, CLOBATTR) values (1, "thename", empty_clob())");   
    7.     //鎖定數(shù)據(jù)行進行更新,注意“for update”語句   
    8.     ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1 for update");   
    9.     if (rs.next())   
    10.     {   
    11.         //得到j(luò)ava.sql.Clob對象后強制轉(zhuǎn)換為oracle.sql.CLOB   
    12.         oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("CLOBATTR");   
    13.         Writer outStream = clob.getCharacterOutputStream();   
    14.         //data是傳入的字符串,定義:String data   
    15.         char[] c = data.toCharArray();   
    16.         outStream.write(c, 0, c.length);   
    17.     }   
    18.     outStream.flush();   
    19.     outStream.close();   
    20.     con.commit();   
    21.     con.close();   
    22.   
    BLOB
    java 代碼
    1. //獲得數(shù)據(jù)庫連接   
    2.     Connection con = ConnectionFactory.getConnection();   
    3.     con.setAutoCommit(false);   
    4.     Statement st = con.createStatement();   
    5.     //插入一個空對象empty_blob()   
    6.     st.executeUpdate("insert into TESTBLOB (ID, NAME, BLOBATTR) values (1, "thename", empty_blob())");   
    7.     //鎖定數(shù)據(jù)行進行更新,注意“for update”語句   
    8.     ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1 for update");   
    9.     if (rs.next())   
    10.     {   
    11.         //得到j(luò)ava.sql.Blob對象后強制轉(zhuǎn)換為oracle.sql.BLOB   
    12.         oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("BLOBATTR");   
    13.         OutputStream outStream = blob.getBinaryOutputStream();   
    14.         //data是傳入的byte數(shù)組,定義:byte[] data   
    15.         outStream.write(data, 0, data.length);   
    16.     }   
    17.     outStream.flush();   
    18.     outStream.close();   
    19.     con.commit();   
    20.     con.close();
    posted on 2010-08-06 14:20 fly 閱讀(906) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫學(xué)習(xí)
    主站蜘蛛池模板: 亚洲AV成人潮喷综合网| 美丽姑娘免费观看在线观看中文版| 亚洲免费福利在线视频| 亚洲国产精品SSS在线观看AV| 91精品国产免费入口| 色噜噜AV亚洲色一区二区| jizz免费在线观看| 亚洲人成网站在线观看青青| 亚洲性猛交XXXX| 亚洲av片不卡无码久久| 91短视频在线免费观看| 亚洲成人高清在线观看| 亚洲精品视频免费| 亚洲情XO亚洲色XO无码| 久久aa毛片免费播放嗯啊| 亚洲色成人网一二三区| 一区二区三区在线观看免费| 亚洲无码黄色网址| 国产99视频精品免费专区| 99亚洲精品高清一二区| 日韩欧美一区二区三区免费观看 | 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 日本19禁啪啪无遮挡免费动图| 在线免费观看国产视频| 欧亚一级毛片免费看| 亚洲线精品一区二区三区| 性无码免费一区二区三区在线| 亚洲熟妇无码久久精品| 精品免费国产一区二区三区| 国产福利在线观看永久免费| 亚洲成人中文字幕| 妞干网免费视频观看| 一道本在线免费视频| 久久亚洲熟女cc98cm| 蜜臀91精品国产免费观看| 国产日韩久久免费影院 | 乱淫片免费影院观看| 亚洲卡一卡2卡三卡4卡无卡三| 一级女性全黄久久生活片免费 | 亚洲成人黄色在线| 亚洲精品无码久久不卡|