posts - 0, comments - 77, trackbacks - 0, articles - 356
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          import?java.io.*;
          import?java.util.*;
          import?java.sql.*;
          ??
          public?class?LobPros
          {
          ??
          ????/**
          ?????*?orACLE驅(qū)動程序
          ?????*/
          ????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";
          ??
          ????/**
          ?????*?數(shù)據(jù)庫連接
          ?????*/
          ????private?static?Connection?conn?=?null;
          ??
          ????/**
          ?????*?SQL語句對象
          ?????*/
          ????private?static?Statement?stmt?=?null;
          ??
          ????/**
          ?????*?@roseuid?3EDA089E02BC
          ?????*/
          ????public?LobPros()
          ????{
          ??
          ????}
          ??
          ????/**
          ?????*?往數(shù)據(jù)庫中插入一個新的CLOB對象
          ?????*
          ?????*?@param?infile?-?數(shù)據(jù)文件
          ?????*?@throws?java.lang.Exception
          ?????*?@roseuid?3EDA04A902BC
          ?????*/
          ????public?static?void?clobInsert(String?infile)?throws?Exception
          ????{
          ????????/*?設(shè)定不自動提交?*/
          ????????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對象中寫入數(shù)據(jù)?*/
          ????????????????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;
          ????????}
          ??
          ????????/*?恢復(fù)原提交狀態(tài)?*/
          ????????conn.setAutoCommit(defaultCommit);
          ????}
          ??
          ????/**
          ?????*?修改CLOB對象(是在原CLOB對象基礎(chǔ)上進行覆蓋式的修改)
          ?????*
          ?????*?@param?infile?-?數(shù)據(jù)文件
          ?????*?@throws?java.lang.Exception
          ?????*?@roseuid?3EDA04B60367
          ?????*/
          ????public?static?void?clobModify(String?infile)?throws?Exception
          ????{
          ????????/*?設(shè)定不自動提交?*/
          ????????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;
          ????????}
          ??
          ????????/*?恢復(fù)原提交狀態(tài)?*/
          ????????conn.setAutoCommit(defaultCommit);
          ????}
          ??
          ????/**
          ?????*?替換CLOB對象(將原CLOB對象清除,換成一個全新的CLOB對象)
          ?????*
          ?????*?@param?infile?-?數(shù)據(jù)文件
          ?????*?@throws?java.lang.Exception
          ?????*?@roseuid?3EDA04BF01E1
          ?????*/
          ????public?static?void?clobReplace(String?infile)?throws?Exception
          ????{
          ????????/*?設(shè)定不自動提交?*/
          ????????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");
          ????????????????/*?更新數(shù)據(jù)?*/
          ????????????????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;
          ????????}
          ??
          ????????/*?恢復(fù)原提交狀態(tài)?*/
          ????????conn.setAutoCommit(defaultCommit);
          ????}
          ??
          ????/**
          ?????*?CLOB對象讀取
          ?????*
          ?????*?@param?outfile?-?輸出文件名
          ?????*?@throws?java.lang.Exception
          ?????*?@roseuid?3EDA04D80116
          ?????*/
          ????public?static?void?clobRead(String?outfile)?throws?Exception
          ????{
          ????????/*?設(shè)定不自動提交?*/
          ????????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;
          ????????}
          ??
          ????????/*?恢復(fù)原提交狀態(tài)?*/
          ????????conn.setAutoCommit(defaultCommit);
          ????}
          ??
          ????/**
          ?????*?向數(shù)據(jù)庫中插入一個新的BLOB對象
          ?????*
          ?????*?@param?infile?-?數(shù)據(jù)文件
          ?????*?@throws?java.lang.Exception
          ?????*?@roseuid?3EDA04E300F6
          ?????*/
          ????public?static?void?blobInsert(String?infile)?throws?Exception
          ????{
          ????????/*?設(shè)定不自動提交?*/
          ????????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對象中寫入數(shù)據(jù)?*/
          ????????????????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;
          ????????}
          ??
          ????????/*?恢復(fù)原提交狀態(tài)?*/
          ????????conn.setAutoCommit(defaultCommit);
          ????}
          ??
          ????/**
          ?????*?修改BLOB對象(是在原BLOB對象基礎(chǔ)上進行覆蓋式的修改)
          ?????*
          ?????*?@param?infile?-?數(shù)據(jù)文件
          ?????*?@throws?java.lang.Exception
          ?????*?@roseuid?3EDA04E90106
          ?????*/
          ????public?static?void?blobModify(String?infile)?throws?Exception
          ????{
          ????????/*?設(shè)定不自動提交?*/
          ????????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對象中寫入數(shù)據(jù)?*/
          ????????????????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;
          ????????}
          ??
          ????????/*?恢復(fù)原提交狀態(tài)?*/
          ????????conn.setAutoCommit(defaultCommit);
          ????}
          ??
          ????/**
          ?????*?替換BLOB對象(將原BLOB對象清除,換成一個全新的BLOB對象)
          ?????*
          ?????*?@param?infile?-?數(shù)據(jù)文件
          ?????*?@throws?java.lang.Exception
          ?????*?@roseuid?3EDA0505000C
          ?????*/
          ????public?static?void?blobReplace(String?infile)?throws?Exception
          ????{
          ????????/*?設(shè)定不自動提交?*/
          ????????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對象中寫入數(shù)據(jù)?*/
          ????????????????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;
          ????????}
          ??
          ????????/*?恢復(fù)原提交狀態(tài)?*/
          ????????conn.setAutoCommit(defaultCommit);
          ????}
          ??
          ????/**
          ?????*?BLOB對象讀取
          ?????*
          ?????*?@param?outfile?-?輸出文件名
          ?????*?@throws?java.lang.Exception
          ?????*?@roseuid?3EDA050B003B
          ?????*/
          ????public?static?void?blobRead(String?outfile)?throws?Exception
          ????{
          ????????/*?設(shè)定不自動提交?*/
          ????????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;
          ????????}
          ??
          ????????/*?恢復(fù)原提交狀態(tài)?*/
          ????????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?-?命令行參數(shù)
          ?????*?@throws?java.lang.Exception
          ?????*?@roseuid?3EDA052002AC
          ?????*/
          ????public?static?void?main(String[]?args)?throws?Exception
          ????{
          ????????/*?裝載驅(qū)動,建立數(shù)據(jù)庫連接?*/
          ????????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");
          ??
          ????????/*?關(guān)閉資源退出?*/
          ????????conn.close();
          ????????System.exit(0);
          ????}
          }
          主站蜘蛛池模板: 东平县| 漳浦县| 泾阳县| 称多县| 彩票| 洪湖市| 新营市| 剑阁县| 巴马| 衡东县| 平乐县| 武功县| 呈贡县| 泽普县| 绿春县| 新竹县| 宣威市| 兴义市| 沐川县| 治县。| 衡南县| 邳州市| 佛教| 青神县| 永兴县| 南京市| 婺源县| 页游| 溆浦县| 客服| 永春县| 肥乡县| 汝阳县| 高雄市| 博兴县| 宁乡县| 潮安县| 遂宁市| 布拖县| 平安县| 贵德县|