談笑有鴻儒,往來無白丁

          在恰當的時間、地點以恰當的方式表達給恰當的人...  閱讀的時候請注意分類,佛曰我日里面是談笑文章,其他是各個分類的文章,積極的熱情投入到寫博的隊伍中來,支持blogjava做大做強!向dudu站長致敬>> > 我的微博敬請收聽
          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);
          ? ? }
          }
          posted on 2006-12-20 10:34 壞男孩 閱讀(551) 評論(0)  編輯  收藏 所屬分類: java命令學習
          主站蜘蛛池模板: 新密市| 垫江县| 茂名市| 丹巴县| 清丰县| 莱阳市| 砀山县| 长子县| 安泽县| 深泽县| 谢通门县| 卓尼县| 东兴市| 宜良县| 汾阳市| 湘乡市| 塘沽区| 电白县| 离岛区| 黄浦区| 长治市| 淮北市| 桑日县| 伊金霍洛旗| 长春市| 盐亭县| 永仁县| 富蕴县| 密云县| 凌海市| 锦州市| 东台市| 盱眙县| 沛县| 温州市| 抚松县| 宝坻区| 泽库县| 益阳市| 黄山市| 静宁县|