婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

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

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

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

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

一、 CLOB對象的存取

1、往數(shù)據(jù)庫中插入一個新的CLOB對像

復(fù)制代碼 代碼如下:

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

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

復(fù)制代碼 代碼如下:

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");
/* 進(jìn)行覆蓋式修改 */
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);
}

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

復(fù)制代碼 代碼如下:

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

4、CLOB對像讀取

復(fù)制代碼 代碼如下:

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

二、 BLOB對象的存取

1、 向數(shù)據(jù)庫中插入一個新的BLOB對像

復(fù)制代碼 代碼如下:

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

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

復(fù)制代碼 代碼如下:

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

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

復(fù)制代碼 代碼如下:

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

4、BLOB對像讀取

復(fù)制代碼 代碼如下:

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");
/* 以二進(jìn)制形式輸出 */
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);
}


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

一是必須取消自動提交。

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

標(biāo)簽:泰安 海北 宜春 酒泉 六安 葫蘆島 淮南 孝感

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《oracle中讀寫blob字段的問題解析》,本文關(guān)鍵詞  oracle,中,讀寫,blob,字段,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《oracle中讀寫blob字段的問題解析》相關(guān)的同類信息!
  • 本頁收集關(guān)于oracle中讀寫blob字段的問題解析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久女同性恋中文字幕| 欧美高清性hdvideosex| 精品一区二区三区蜜桃| 亚洲第一综合色| 一片黄亚洲嫩模| 亚洲乱码国产乱码精品精小说| 国产欧美视频一区二区| 国产丝袜欧美中文另类| 国产精品护士白丝一区av| 国产片一区二区三区| 国产精品毛片高清在线完整版| 国产亚洲1区2区3区| 中文字幕巨乱亚洲| 欧美日韩一二三区| 狠狠色丁香久久婷婷综合_中| 青青草国产精品97视觉盛宴| 亚洲美女偷拍久久| 一级女性全黄久久生活片免费| 亚洲男人电影天堂| 亚洲一区二区中文在线| 三级欧美韩日大片在线看| 美女www一区二区| 丰满岳乱妇一区二区三区| 91麻豆免费观看| 欧美日韩在线直播| 欧美精品一区二区久久婷婷 | 3atv一区二区三区| 这里只有精品免费| 久久久99精品免费观看| 亚洲视频一区二区在线观看| 午夜精品aaa| 国产一区二区日韩精品| 99久久精品国产精品久久| 欧美日韩一区二区欧美激情| 欧美精品一区二区三区视频| 亚洲视频香蕉人妖| 久久99热这里只有精品| 99re视频精品| 日韩欧美色综合网站| 国产精品久久毛片av大全日韩| 亚洲国产另类精品专区| 久久精品二区亚洲w码| 9l国产精品久久久久麻豆| 日韩视频免费观看高清完整版| 自拍视频在线观看一区二区| 麻豆精品一区二区av白丝在线| www.亚洲免费av| 欧美sm极限捆绑bd| 亚洲国产aⅴ成人精品无吗| 成人性生交大合| 日韩一区二区三区在线观看| 亚洲激情男女视频| 成人教育av在线| 日韩视频在线你懂得| 一区二区免费视频| 成人美女视频在线观看18| 精品国产第一区二区三区观看体验| 亚洲综合色成人| 99国产精品国产精品毛片| www日韩大片| 蜜臀久久99精品久久久久久9| 欧美在线观看视频一区二区| 中文字幕日韩精品一区 | 成人久久久精品乱码一区二区三区| 在线综合视频播放| 一区二区三区四区高清精品免费观看| 懂色av一区二区三区蜜臀| 精品电影一区二区| 蜜桃av噜噜一区| 91精品麻豆日日躁夜夜躁| 亚洲h在线观看| 日本韩国欧美一区| 亚洲另类一区二区| 色综合 综合色| 亚洲精品一二三四区| 在线观看www91| 亚洲欧美激情一区二区| 色婷婷国产精品| 亚洲激情图片小说视频| 色哟哟欧美精品| 亚洲精品欧美激情| 欧美性受xxxx黑人xyx| 五月激情综合婷婷| 在线成人免费观看| 麻豆精品一区二区| 久久久久久久久久久久久女国产乱 | 日韩和的一区二区| 欧美一级高清大全免费观看| 日日夜夜一区二区| 欧美一二三四区在线| 紧缚捆绑精品一区二区| 久久蜜桃香蕉精品一区二区三区| 国产美女娇喘av呻吟久久| 国产精品天天看| 日本福利一区二区| 日本大胆欧美人术艺术动态 | 久久久精品欧美丰满| jlzzjlzz欧美大全| 欧美一区二区播放| 国产精品系列在线播放| 国产精品色在线观看| 色久优优欧美色久优优| 日韩二区在线观看| 精品不卡在线视频| 91亚洲国产成人精品一区二三| 天天综合色天天综合色h| 337p日本欧洲亚洲大胆精品| 不卡视频在线看| 日韩av在线播放中文字幕| 中文字幕欧美国产| 欧美三级韩国三级日本三斤 | 国产精品丝袜91| 欧美在线观看一区二区| 九九视频精品免费| 亚洲精品视频在线观看网站| 日韩精品一区二区三区四区| 91免费视频网| 国产精品原创巨作av| 日韩主播视频在线| 中文字幕一区二区视频| 精品免费视频.| 在线免费观看日韩欧美| 国产成人免费在线视频| 五月综合激情网| 亚洲另类在线视频| 中文字幕免费在线观看视频一区| 911精品国产一区二区在线| 91麻豆产精品久久久久久| 激情小说欧美图片| 亚洲一级电影视频| 国产精品大尺度| 精品国产乱码久久| 欧美一区二区在线免费观看| 欧美午夜不卡在线观看免费| av电影一区二区| 丁香五精品蜜臀久久久久99网站| 久久国产精品无码网站| 亚洲高清在线精品| 一区二区激情视频| 一区二区三国产精华液| 中文字幕在线一区免费| 国产精品毛片久久久久久| 久久久99久久| 久久久久久免费毛片精品| 久久综合九色综合97婷婷女人| 日韩欧美视频一区| 日韩一区二区免费高清| 5858s免费视频成人| 欧美一区二视频| 日韩一区二区三区免费观看| 日韩一级视频免费观看在线| 欧美理论电影在线| 欧美巨大另类极品videosbest | 99久久综合99久久综合网站| 国产a视频精品免费观看| 国产成人亚洲综合a∨婷婷图片| 国产一区二区毛片| 国产在线一区二区综合免费视频| 精油按摩中文字幕久久| 国产一区二区三区免费播放| 国产成人av电影免费在线观看| 国产成人精品一区二| 91蜜桃在线观看| 91黄色在线观看| 欧美日韩精品欧美日韩精品一综合| 制服丝袜激情欧洲亚洲| 精品久久久久久最新网址| 国产区在线观看成人精品 | 久久久久88色偷偷免费| 久久久久久麻豆| 日韩美女视频19| 亚洲va在线va天堂| 日本欧美一区二区三区| 九九视频精品免费| 波多野结衣91| 欧美日韩国产123区| 日韩一区二区免费在线观看| 欧美激情一区在线观看| 亚洲综合久久av| 激情小说欧美图片| 91麻豆精品在线观看| 日韩一级完整毛片| 国产精品国产三级国产专播品爱网| 一卡二卡欧美日韩| 国内成人自拍视频| 色婷婷综合五月| 精品久久久久久久久久久院品网| 国产精品美女视频| 天堂一区二区在线免费观看| 丁香激情综合国产| 欧美日韩精品专区| 亚洲国产精品av| 日韩电影免费在线观看网站| 99久久久久久99| 2022国产精品视频| 亚洲高清视频在线| 高清不卡在线观看av| 这里只有精品免费| 一区av在线播放| 99re视频这里只有精品|