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

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

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

    posts - 0, comments - 77, trackbacks - 0, articles - 356
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    JDBC存取ORACLE大型數據對象LOB幾種情況的示范類

    Posted on 2007-03-13 17:29 semovy 閱讀(368) 評論(0)  編輯  收藏 所屬分類: JDBC
    import?java.io.*;
    import?java.util.*;
    import?java.sql.*;
    ??
    public?class?LobPros
    {
    ??
    ????/**
    ?????*?orACLE驅動程序
    ?????*/
    ????private?static?final?String?DRIVER?=?"oracle.jdbc.driver.OracleDriver";
    ??
    ????/**
    ?????*?orACLE連接用URL
    ?????*/
    ????private?static?final?String?URL?=?"jdbc:oracle:thin:@test2000:1521:orac";
    ??
    ????/**
    ?????*?用戶名
    ?????*/
    ????private?static?final?String?USER?=?"user";
    ??
    ????/**
    ?????*?密碼
    ?????*/
    ????private?static?final?String?PASSWORD?=?"pswd";
    ??
    ????/**
    ?????*?數據庫連接
    ?????*/
    ????private?static?Connection?conn?=?null;
    ??
    ????/**
    ?????*?SQL語句對象
    ?????*/
    ????private?static?Statement?stmt?=?null;
    ??
    ????/**
    ?????*?@roseuid?3EDA089E02BC
    ?????*/
    ????public?LobPros()
    ????{
    ??
    ????}
    ??
    ????/**
    ?????*?往數據庫中插入一個新的CLOB對象
    ?????*
    ?????*?@param?infile?-?數據文件
    ?????*?@throws?java.lang.Exception
    ?????*?@roseuid?3EDA04A902BC
    ?????*/
    ????public?static?void?clobInsert(String?infile)?throws?Exception
    ????{
    ????????/*?設定不自動提交?*/
    ????????boolean?defaultCommit?=?conn.getAutoCommit();
    ????????conn.setAutoCommit(false);
    ??
    ????????try?{
    ????????????/*?插入一個空的CLOB對象?*/
    ????????????stmt.executeUpdate("Insert?INTO?TEST_CLOB?VALUES?('111',?EMPTY_CLOB())");
    ????????????/*?查詢此CLOB對象并鎖定?*/
    ????????????ResultSet?rs?=?stmt.executeQuery("Select?CLOBCOL?FROM?TEST_CLOB?Where?ID='111'?FOR?Update");
    ????????????while?(rs.next())?{
    ????????????????/*?取出此CLOB對象?*/
    ????????????????oracle.sql.CLOB?clob?=?(oracle.sql.CLOB)rs.getClob("CLOBCOL");
    ????????????????/*?向CLOB對象中寫入數據?*/
    ????????????????BufferedWriter?out?=?new?BufferedWriter(clob.getCharacterOutputStream());
    ????????????????BufferedReader?in?=?new?BufferedReader(new?FileReader(infile));
    ????????????????int?c;
    ????????????????while?((c=in.read())!=-1)?{
    ????????????????????out.write(c);
    ????????????????}
    ????????????????in.close();
    ????????????????out.close();
    ????????????}
    ????????????/*?正式提交?*/
    ????????????conn.commit();
    ????????}?catch?(Exception?ex)?{
    ????????????/*?出錯回滾?*/
    ????????????conn.rollback();
    ????????????throw?ex;
    ????????}
    ??
    ????????/*?恢復原提交狀態?*/
    ????????conn.setAutoCommit(defaultCommit);
    ????}
    ??
    ????/**
    ?????*?修改CLOB對象(是在原CLOB對象基礎上進行覆蓋式的修改)
    ?????*
    ?????*?@param?infile?-?數據文件
    ?????*?@throws?java.lang.Exception
    ?????*?@roseuid?3EDA04B60367
    ?????*/
    ????public?static?void?clobModify(String?infile)?throws?Exception
    ????{
    ????????/*?設定不自動提交?*/
    ????????boolean?defaultCommit?=?conn.getAutoCommit();
    ????????conn.setAutoCommit(false);
    ??
    ????????try?{
    ????????????/*?查詢CLOB對象并鎖定?*/
    ????????????ResultSet?rs?=?stmt.executeQuery("Select?CLOBCOL?FROM?TEST_CLOB?Where?ID='111'?FOR?Update");
    ????????????while?(rs.next())?{
    ????????????????/*?獲取此CLOB對象?*/
    ????????????????oracle.sql.CLOB?clob?=?(oracle.sql.CLOB)rs.getClob("CLOBCOL");??
    ????????????????/*?進行覆蓋式修改?*/
    ????????????????BufferedWriter?out?=?new?BufferedWriter(clob.getCharacterOutputStream());
    ????????????????BufferedReader?in?=?new?BufferedReader(new?FileReader(infile));
    ????????????????int?c;
    ????????????????while?((c=in.read())!=-1)?{
    ????????????????????out.write(c);
    ????????????????}
    ????????????????in.close();
    ????????????????out.close();
    ????????????}
    ????????????/*?正式提交?*/
    ????????????conn.commit();
    ????????}?catch?(Exception?ex)?{
    ????????????/*?出錯回滾?*/
    ????????????conn.rollback();
    ????????????throw?ex;
    ????????}
    ??
    ????????/*?恢復原提交狀態?*/
    ????????conn.setAutoCommit(defaultCommit);
    ????}
    ??
    ????/**
    ?????*?替換CLOB對象(將原CLOB對象清除,換成一個全新的CLOB對象)
    ?????*
    ?????*?@param?infile?-?數據文件
    ?????*?@throws?java.lang.Exception
    ?????*?@roseuid?3EDA04BF01E1
    ?????*/
    ????public?static?void?clobReplace(String?infile)?throws?Exception
    ????{
    ????????/*?設定不自動提交?*/
    ????????boolean?defaultCommit?=?conn.getAutoCommit();
    ????????conn.setAutoCommit(false);
    ??
    ????????try?{
    ????????????/*?清空原CLOB對象?*/
    ????????????stmt.executeUpdate("Update?TEST_CLOB?SET?CLOBCOL=EMPTY_CLOB()?Where?ID='111'");
    ????????????/*?查詢CLOB對象并鎖定?*/
    ????????????ResultSet?rs?=?stmt.executeQuery("Select?CLOBCOL?FROM?TEST_CLOB?Where?ID='111'?FOR?Update");
    ????????????while?(rs.next())?{
    ????????????????/*?獲取此CLOB對象?*/
    ????????????????oracle.sql.CLOB?clob?=?(oracle.sql.CLOB)rs.getClob("CLOBCOL");
    ????????????????/*?更新數據?*/
    ????????????????BufferedWriter?out?=?new?BufferedWriter(clob.getCharacterOutputStream());
    ????????????????BufferedReader?in?=?new?BufferedReader(new?FileReader(infile));
    ????????????????int?c;
    ????????????????while?((c=in.read())!=-1)?{
    ????????????????????out.write(c);
    ????????????????}
    ????????????????in.close();
    ????????????????out.close();
    ????????????}
    ????????????/*?正式提交?*/
    ????????????conn.commit();
    ????????}?catch?(Exception?ex)?{
    ????????????/*?出錯回滾?*/
    ????????????conn.rollback();
    ????????????throw?ex;
    ????????}
    ??
    ????????/*?恢復原提交狀態?*/
    ????????conn.setAutoCommit(defaultCommit);
    ????}
    ??
    ????/**
    ?????*?CLOB對象讀取
    ?????*
    ?????*?@param?outfile?-?輸出文件名
    ?????*?@throws?java.lang.Exception
    ?????*?@roseuid?3EDA04D80116
    ?????*/
    ????public?static?void?clobRead(String?outfile)?throws?Exception
    ????{
    ????????/*?設定不自動提交?*/
    ????????boolean?defaultCommit?=?conn.getAutoCommit();
    ????????conn.setAutoCommit(false);
    ??
    ????????try?{
    ????????????/*?查詢CLOB對象?*/
    ????????????ResultSet?rs?=?stmt.executeQuery("Select?*?FROM?TEST_CLOB?Where?ID='111'");
    ????????????while?(rs.next())?{
    ????????????????/*?獲取CLOB對象?*/
    ????????????????oracle.sql.CLOB?clob?=?(oracle.sql.CLOB)rs.getClob("CLOBCOL");
    ????????????????/*?以字符形式輸出?*/
    ????????????????BufferedReader?in?=?new?BufferedReader(clob.getCharacterStream());
    ????????????????BufferedWriter?out?=?new?BufferedWriter(new?FileWriter(outfile));
    ????????????????int?c;
    ????????????????while?((c=in.read())!=-1)?{
    ????????????????????out.write(c);
    ????????????????}
    ????????????????out.close();
    ????????????????in.close();
    ????????????}
    ????????}?catch?(Exception?ex)?{
    ????????????conn.rollback();
    ????????????throw?ex;
    ????????}
    ??
    ????????/*?恢復原提交狀態?*/
    ????????conn.setAutoCommit(defaultCommit);
    ????}
    ??
    ????/**
    ?????*?向數據庫中插入一個新的BLOB對象
    ?????*
    ?????*?@param?infile?-?數據文件
    ?????*?@throws?java.lang.Exception
    ?????*?@roseuid?3EDA04E300F6
    ?????*/
    ????public?static?void?blobInsert(String?infile)?throws?Exception
    ????{
    ????????/*?設定不自動提交?*/
    ????????boolean?defaultCommit?=?conn.getAutoCommit();
    ????????conn.setAutoCommit(false);
    ??
    ????????try?{
    ????????????/*?插入一個空的BLOB對象?*/
    ????????????stmt.executeUpdate("Insert?INTO?TEST_BLOB?VALUES?('222',?EMPTY_BLOB())");
    ????????????/*?查詢此BLOB對象并鎖定?*/
    ????????????ResultSet?rs?=?stmt.executeQuery("Select?BLOBCOL?FROM?TEST_BLOB?Where?ID='222'?FOR?Update");
    ????????????while?(rs.next())?{
    ????????????????/*?取出此BLOB對象?*/
    ????????????????oracle.sql.BLOB?blob?=?(oracle.sql.BLOB)rs.getBlob("BLOBCOL");
    ????????????????/*?向BLOB對象中寫入數據?*/
    ????????????????BufferedOutputStream?out?=?new?BufferedOutputStream(blob.getBinaryOutputStream());
    ????????????????BufferedInputStream?in?=?new?BufferedInputStream(new?FileInputStream(infile));
    ????????????????int?c;
    ????????????????while?((c=in.read())!=-1)?{
    ????????????????????out.write(c);
    ????????????????}
    ????????????????in.close();
    ????????????????out.close();
    ????????????}
    ????????????/*?正式提交?*/
    ????????????conn.commit();
    ????????}?catch?(Exception?ex)?{
    ????????????/*?出錯回滾?*/
    ????????????conn.rollback();
    ????????????throw?ex;
    ????????}
    ??
    ????????/*?恢復原提交狀態?*/
    ????????conn.setAutoCommit(defaultCommit);
    ????}
    ??
    ????/**
    ?????*?修改BLOB對象(是在原BLOB對象基礎上進行覆蓋式的修改)
    ?????*
    ?????*?@param?infile?-?數據文件
    ?????*?@throws?java.lang.Exception
    ?????*?@roseuid?3EDA04E90106
    ?????*/
    ????public?static?void?blobModify(String?infile)?throws?Exception
    ????{
    ????????/*?設定不自動提交?*/
    ????????boolean?defaultCommit?=?conn.getAutoCommit();
    ????????conn.setAutoCommit(false);
    ??
    ????????try?{
    ????????????/*?查詢BLOB對象并鎖定?*/
    ????????????ResultSet?rs?=?stmt.executeQuery("Select?BLOBCOL?FROM?TEST_BLOB?Where?ID='222'?FOR?Update");
    ????????????while?(rs.next())?{
    ????????????????/*?取出此BLOB對象?*/
    ????????????????oracle.sql.BLOB?blob?=?(oracle.sql.BLOB)rs.getBlob("BLOBCOL");
    ????????????????/*?向BLOB對象中寫入數據?*/
    ????????????????BufferedOutputStream?out?=?new?BufferedOutputStream(blob.getBinaryOutputStream());
    ????????????????BufferedInputStream?in?=?new?BufferedInputStream(new?FileInputStream(infile));
    ????????????????int?c;
    ????????????????while?((c=in.read())!=-1)?{
    ????????????????????out.write(c);
    ????????????????}
    ????????????????in.close();
    ????????????????out.close();
    ????????????}
    ????????????/*?正式提交?*/
    ????????????conn.commit();
    ????????}?catch?(Exception?ex)?{
    ????????????/*?出錯回滾?*/
    ????????????conn.rollback();
    ????????????throw?ex;
    ????????}
    ??
    ????????/*?恢復原提交狀態?*/
    ????????conn.setAutoCommit(defaultCommit);
    ????}
    ??
    ????/**
    ?????*?替換BLOB對象(將原BLOB對象清除,換成一個全新的BLOB對象)
    ?????*
    ?????*?@param?infile?-?數據文件
    ?????*?@throws?java.lang.Exception
    ?????*?@roseuid?3EDA0505000C
    ?????*/
    ????public?static?void?blobReplace(String?infile)?throws?Exception
    ????{
    ????????/*?設定不自動提交?*/
    ????????boolean?defaultCommit?=?conn.getAutoCommit();
    ????????conn.setAutoCommit(false);
    ??
    ????????try?{
    ????????????/*?清空原BLOB對象?*/
    ????????????stmt.executeUpdate("Update?TEST_BLOB?SET?BLOBCOL=EMPTY_BLOB()?Where?ID='222'");
    ????????????/*?查詢此BLOB對象并鎖定?*/
    ????????????ResultSet?rs?=?stmt.executeQuery("Select?BLOBCOL?FROM?TEST_BLOB?Where?ID='222'?FOR?Update");
    ????????????while?(rs.next())?{
    ????????????????/*?取出此BLOB對象?*/
    ????????????????oracle.sql.BLOB?blob?=?(oracle.sql.BLOB)rs.getBlob("BLOBCOL");
    ????????????????/*?向BLOB對象中寫入數據?*/
    ????????????????BufferedOutputStream?out?=?new?BufferedOutputStream(blob.getBinaryOutputStream());
    ????????????????BufferedInputStream?in?=?new?BufferedInputStream(new?FileInputStream(infile));
    ????????????????int?c;
    ????????????????while?((c=in.read())!=-1)?{
    ????????????????????out.write(c);
    ????????????????}
    ????????????????in.close();
    ????????????????out.close();
    ????????????}
    ????????????/*?正式提交?*/
    ????????????conn.commit();
    ????????}?catch?(Exception?ex)?{
    ????????????/*?出錯回滾?*/
    ????????????conn.rollback();
    ????????????throw?ex;
    ????????}
    ??
    ????????/*?恢復原提交狀態?*/
    ????????conn.setAutoCommit(defaultCommit);
    ????}
    ??
    ????/**
    ?????*?BLOB對象讀取
    ?????*
    ?????*?@param?outfile?-?輸出文件名
    ?????*?@throws?java.lang.Exception
    ?????*?@roseuid?3EDA050B003B
    ?????*/
    ????public?static?void?blobRead(String?outfile)?throws?Exception
    ????{
    ????????/*?設定不自動提交?*/
    ????????boolean?defaultCommit?=?conn.getAutoCommit();
    ????????conn.setAutoCommit(false);
    ??
    ????????try?{
    ????????????/*?查詢BLOB對象?*/
    ????????????ResultSet?rs?=?stmt.executeQuery("Select?BLOBCOL?FROM?TEST_BLOB?Where?ID='222'");
    ????????????while?(rs.next())?{
    ????????????????/*?取出此BLOB對象?*/
    ????????????????oracle.sql.BLOB?blob?=?(oracle.sql.BLOB)rs.getBlob("BLOBCOL");
    ????????????????/*?以二進制形式輸出?*/
    ????????????????BufferedOutputStream?out?=?new?BufferedOutputStream(new?FileOutputStream(outfile));
    ????????????????BufferedInputStream?in?=?new?BufferedInputStream(blob.getBinaryStream());
    ????????????????int?c;
    ????????????????while?((c=in.read())!=-1)?{
    ????????????????????out.write(c);
    ????????????????}
    ????????????????in.close();
    ????????????????out.close();
    ????????????}
    ????????????/*?正式提交?*/
    ????????????conn.commit();
    ????????}?catch?(Exception?ex)?{
    ????????????/*?出錯回滾?*/
    ????????????conn.rollback();
    ????????????throw?ex;
    ????????}
    ??
    ????????/*?恢復原提交狀態?*/
    ????????conn.setAutoCommit(defaultCommit);
    ????}
    ??
    ????/**
    ?????*?建立測試用表格
    ?????*?@throws?Exception
    ?????*/
    ????public?static?void?createTables()?throws?Exception?{
    ????????try?{
    ????????????stmt.executeUpdate("Create?TABLE?TEST_CLOB?(?ID?NUMBER(3),?CLOBCOL?CLOB)");
    ????????????stmt.executeUpdate("Create?TABLE?TEST_BLOB?(?ID?NUMBER(3),?BLOBCOL?BLOB)");
    ????????}?catch?(Exception?ex)?{
    ??
    ????????}
    ????}
    ??
    ????/**
    ?????*?@param?args?-?命令行參數
    ?????*?@throws?java.lang.Exception
    ?????*?@roseuid?3EDA052002AC
    ?????*/
    ????public?static?void?main(String[]?args)?throws?Exception
    ????{
    ????????/*?裝載驅動,建立數據庫連接?*/
    ????????Class.forName(DRIVER);
    ????????conn?=?DriverManager.getConnection(URL,USER,PASSWORD);
    ????????stmt?=?conn.createStatement();
    ??
    ????????/*?建立測試表格?*/
    ????????createTables();
    ??
    ????????/*?CLOB對象插入測試?*/
    ????????clobInsert("c:/clobInsert.txt");
    ????????clobRead("c:/clobInsert.out");
    ??
    ????????/*?CLOB對象修改測試?*/
    ????????clobModify("c:/clobModify.txt");
    ????????clobRead("c:/clobModify.out");
    ??
    ????????/*?CLOB對象替換測試?*/
    ????????clobReplace("c:/clobReplace.txt");
    ????????clobRead("c:/clobReplace.out");
    ??
    ????????/*?BLOB對象插入測試?*/
    ????????blobInsert("c:/blobInsert.doc");
    ????????blobRead("c:/blobInsert.out");
    ??
    ????????/*?BLOB對象修改測試?*/
    ????????blobModify("c:/blobModify.doc");
    ????????blobRead("c:/blobModify.out");
    ??
    ????????/*?BLOB對象替換測試?*/
    ????????blobReplace("c:/blobReplace.doc");
    ????????blobRead("c:/bolbReplace.out");
    ??
    ????????/*?關閉資源退出?*/
    ????????conn.close();
    ????????System.exit(0);
    ????}
    }
    主站蜘蛛池模板: 两个人日本WWW免费版| 色网站在线免费观看| 久久亚洲一区二区| 久久久久久久综合日本亚洲| 亚洲AV无码AV男人的天堂| 疯狂做受xxxx高潮视频免费| 免费无码H肉动漫在线观看麻豆| 久久精品乱子伦免费| 男人的好免费观看在线视频| 夫妻免费无码V看片| 亚洲欧洲精品成人久久曰影片| 亚洲AV午夜成人片| 西西人体大胆免费视频| 亚洲成av人片一区二区三区| 亚洲男女一区二区三区| 国产激情久久久久影院老熟女免费 | 8090在线观看免费观看| 午夜成年女人毛片免费观看| 免费中文字幕一级毛片| 久久久久亚洲精品影视| 曰批全过程免费视频播放网站 | 久久精品国产亚洲AV无码偷窥| 国产91在线|亚洲| 国产又黄又爽又大的免费视频| 亚洲av一综合av一区| 国产成在线观看免费视频| 亚洲av永久无码精品古装片| 国产成人精品免费视频大| 亚洲va中文字幕无码久久不卡| 99re在线视频免费观看| 亚洲av无码乱码国产精品| 国产在线jyzzjyzz免费麻豆| 亚洲国产成人私人影院| 老司机精品免费视频| 亚洲性69影院在线观看| 91大神免费观看| 国产产在线精品亚洲AAVV| 亚洲国产精品无码中文字| 免费黄色毛片视频| 久久一区二区三区免费播放| 亚洲精品你懂的在线观看|