欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 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即二進制大型對像(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ǔ)上進行覆蓋式的修改)

復(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");
/* 進行覆蓋式修改 */
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ǔ)上進行覆蓋式的修改)

復(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");
/* 以二進制形式輸出 */
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)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    一区二区中文视频| 少妇献身老头系列| 成人在线手机视频| 欧美性生交xxxxx| 男人av资源站| 国产亚洲精品久| 久88久久88久久久| 偷拍夫妻性生活| 日韩你懂的在线播放| 日日骚欧美日韩| 99久久人妻精品免费二区| 4438亚洲最大| 日韩精品免费专区| 亚洲国产精品无码久久久久高潮| 欧美日本一区二区三区四区| 一区二区三区高清不卡| 精品人妻二区中文字幕| 欧美卡1卡2卡| 亚洲成人手机在线| 国产精品伦子伦| 精品国产一区二区亚洲人成毛片| 毛片av中文字幕一区二区| 午夜在线观看一区| 国产嫩草影院久久久久| 成人免费电影视频| 91黄色小视频| 亚洲v日本v欧美v久久精品| 91丝袜在线观看| 欧美草草影院在线视频| 国模一区二区三区白浆| 亚洲人做受高潮| 亚洲欧美偷拍另类a∨色屁股| 91麻豆123| 日韩一区二区在线看片| 久久不见久久见免费视频7| 小向美奈子av| 一区二区高清免费观看影视大全| 中国一级特黄录像播放| 久久久综合视频| 成人高清视频免费观看| 欧美日韩久久不卡| 蜜臀久久久久久久| 日本高清不卡免费| 夜夜爽夜夜爽精品视频| 蜜桃精品成人影片| 中文字幕av一区二区三区免费看| 99久久99久久精品免费看蜜桃| 欧美精品 日韩| 精久久久久久久久久久| 色综合中文字幕国产 | 色综合婷婷久久| 亚洲男同性恋视频| 欧产日产国产精品98| 久久久久久久久一| 91在线视频免费观看| 91精品国产综合久久久蜜臀粉嫩 | 欧美日韩国产一区二区三区地区| 丝瓜av网站精品一区二区 | 日韩av中文在线观看| 天天摸日日摸狠狠添| 洋洋成人永久网站入口| 国产又粗又猛又爽又黄av| 自拍偷拍欧美激情| 波多野结衣影院| 国产精品成人免费精品自在线观看| 免费看毛片的网站| 中文字幕成人av| 免费中文字幕av| 亚洲欧洲av在线| 最新中文字幕视频| 亚洲欧美视频一区| 久久精品视频18| 亚洲综合激情网| 蜜桃av免费观看| 亚洲成av人在线观看| 暗呦丨小u女国产精品| 日本系列欧美系列| 色视频欧美一区二区三区| 毛片av一区二区三区| 在线视频欧美区| 国内外成人在线视频| 欧美日韩免费高清一区色橹橹| 国产精品69久久久久水密桃| 91精品婷婷国产综合久久性色| 成人影视亚洲图片在线| 欧美tk—视频vk| 肉丝美足丝袜一区二区三区四| 国产清纯白嫩初高生在线观看91 | 欧美一区二区黄| 99久久婷婷国产综合精品| 亚洲精品一区二区三区福利| 久久久精品人妻一区二区三区| 国产精品麻豆欧美日韩ww| 亚洲午夜久久久久久久久红桃 | 九九热最新地址| 另类小说综合欧美亚洲| 欧美日韩成人在线一区| eeuss鲁片一区二区三区在线看| 久久综合久久综合久久| 亚洲日本久久久| 亚洲精品日韩专区silk| 糖心vlog免费在线观看| 久久精品av麻豆的观看方式| 欧美高清视频一二三区 | 欧洲av一区二区嗯嗯嗯啊| 国产传媒欧美日韩成人| 2020日本不卡一区二区视频| 先锋资源av在线| 亚洲一二三区不卡| 一本色道久久综合亚洲aⅴ蜜桃 | 国产真实乱在线更新| 黄页视频在线91| 欧美zozozo| 中文字幕在线观看网址| 亚洲午夜一二三区视频| 在线精品亚洲一区二区不卡| 成人激情免费电影网址| 国产精品污网站| 911国产在线| 国产精品一区二区在线观看网站 | 国产精品一区二区x88av| 精品福利一区二区三区| 黄色短视频在线观看| 日韩国产精品大片| 欧美一卡二卡三卡四卡| 小毛片在线观看| 日韩高清不卡一区| 日韩一区二区三区在线| 亚洲av网址在线| 日本系列欧美系列| 欧美sm美女调教| 国产又粗又黄又猛| 韩国理伦片一区二区三区在线播放| 欧美电视剧在线看免费| 性色av蜜臀av色欲av| 美国一区二区三区在线播放| 久久综合99re88久久爱| 日韩视频在线观看免费视频| 国产精品一区一区三区| 国产精品久久久久久久岛一牛影视| 国产成人自拍网站| 成人国产电影网| 亚洲一线二线三线视频| 欧美一区二区在线免费播放| 精品人妻一区二区三区日产乱码卜| 欧美aaa在线| 国产香蕉久久精品综合网| 疯狂撞击丝袜人妻| 91小视频在线免费看| 一个色在线综合| 欧美绝品在线观看成人午夜影视| 日本一级片在线播放| 捆绑变态av一区二区三区| 久久久午夜精品理论片中文字幕| 成人一级片免费看| 成年人网站91| 亚洲成人午夜影院| 欧美精品一区二区不卡| 97在线观看视频免费| 91丨porny丨中文| 三级久久三级久久久| 久久久亚洲精华液精华液精华液 | 亚洲伦在线观看| 7777女厕盗摄久久久| 好吊视频在线观看| 成人精品视频一区二区三区| 一区二区三区四区蜜桃| 日韩视频一区在线观看| 网爆门在线观看| 自拍视频第一页| 久久精品国产在热久久| 国产精品全国免费观看高清 | 欧美综合视频在线观看| 91av在线免费| 粉嫩欧美一区二区三区高清影视| 一区二区三区成人| 久久看人人爽人人| 欧美色手机在线观看| 亚洲区自拍偷拍| 91浏览器入口在线观看| 日本美女一区二区| 国产精品美女久久久久高潮| 欧美日韩精品二区第二页| 91麻豆精品国产91久久综合| 91在线视频官网| 韩国精品一区二区| 亚洲福利视频导航| 久久久久久久久久久黄色| 欧美综合一区二区| 亚洲午夜久久久久久久国产| 91视频免费看| 国内成人免费视频| 亚洲aⅴ怡春院| 国产精品美女久久久久久久网站| 9191久久久久久久久久久| 五月婷婷综合激情网| 日韩Av无码精品| 成人高清av在线| 黄网站免费久久| 日韩精品久久久久久|