好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > oracle中讀寫blob字段的問題解析

oracle中讀寫blob字段的問題解析

熱門標簽:征服者火車站地圖標注 word地圖標注方向 美圖秀秀地圖標注 征服眼公司地圖標注 開封智能外呼系統廠家 人工智能地圖標注自己能做嗎 外呼線路外顯本地號碼 百度地圖標注素材 阿爾巴尼亞地圖標注app

LOB類型分為BLOB和CLOB兩種:BLOB即二進制大型對像(Binary Large Object),適用于存貯非文本的字節流數據(如程序、圖像、影音等)。而CLOB,即字符型大型對像(Character Large Object),則與字符集相關,適于存貯文本型的數據(如歷史檔案、大部頭著作等)。
下面以程序實例說明通過JDBC操縱Oracle數據庫LOB類型字段的幾種情況。

先建立如下兩個測試用的數據庫表,Power Designer PD模型如下:

建表SQL語句為:
CREATE TABLE TEST_CLOB ( ID NUMBER(3), CLOBCOL CLOB)
CREATE TABLE TEST_BLOB ( ID NUMBER(3), BLOBCOL BLOB)

一、 CLOB對象的存取

1、往數據庫中插入一個新的CLOB對像

復制代碼 代碼如下:

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);
}

2、修改CLOB對像(是在原CLOB對像基礎上進行覆蓋式的修改)

復制代碼 代碼如下:

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);
}

3、替換CLOB對像(將原CLOB對像清除,換成一個全新的CLOB對像)

復制代碼 代碼如下:

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);
}

4、CLOB對像讀取

復制代碼 代碼如下:

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對象的存取

1、 向數據庫中插入一個新的BLOB對像

復制代碼 代碼如下:

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);
}

2、修改BLOB對像(是在原BLOB對像基礎上進行覆蓋式的修改)

復制代碼 代碼如下:

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);
}

3、替換BLOB對像(將原BLOB對像清除,換成一個全新的BLOB對像)

復制代碼 代碼如下:

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);
}

4、BLOB對像讀取

復制代碼 代碼如下:

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);
}


觀察上述程序對LOB類型字段的存取,我們可以看出,較之其它類型字段,有下面幾個顯著不同的特點:

一是必須取消自動提交。

您可能感興趣的文章:
  • oracle刪除表字段和oracle表增加字段
  • oracle使用sql語句增加字段示例(sql刪除字段語句)
  • 簡單三步輕松實現ORACLE字段自增
  • 實現oracle數據庫字段自增長(兩種方式)
  • Oracle數據庫表中字段順序的修改方法

標簽:泰安 海北 宜春 酒泉 六安 葫蘆島 淮南 孝感

巨人網絡通訊聲明:本文標題《oracle中讀寫blob字段的問題解析》,本文關鍵詞  oracle,中,讀寫,blob,字段,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《oracle中讀寫blob字段的問題解析》相關的同類信息!
  • 本頁收集關于oracle中讀寫blob字段的問題解析的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 医生超肉高h细节爽文| 哈啊~孕夫大肚高h双性| 裸体DJ裸体舞视频| **aaaaa毛片| 亲爱的老师8韩国高清| 日本3d动漫在线免费看| 韩国BJ极品自慰| 增城市| 日日狠狠久久8888偷偷色| 女市长的奶水真甜| 乡下野战好大好硬好爽| 啊灬灬用力灬嗯灬3p| 亚洲免费视频观看| 啊灬嗯灬啊灬用力点灬水APP| www香蕉| 动图gif动态图污| 国产伦精品一区二区三区视频黑人| ??成人直播色情裸体美女情交片| 精品入口蜜桃| 肉多污到爆大尺度np纯爱小说| 穆桂英含精肉臀迎合娇吟电影| 国产超薄黑色肉色丝袜网站| 成人??涩涩小片多人| 亚洲精品在线第一页| 免费永久在线观看污污的网站| 黄色性生活片| 国产在线一区二区三区观| 比较污的军婚h| 《爆乳女教师bd》| 欧美日韩中文国产一区发布| 91视频精选| 18禁被爆?真人羞羞视频| 清纯唯美经典一区二区| 男子扒开美女的私处舔| 三种人坚决不能吃补中益气丸| 灭火宝贝3美版法国航空| 《貂蝉艳史》三级| 女人高潮AAA大片App| 女同女同志freevoices免| 欧美人鲁交大全| 国产欧美日产激情视频|