科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道oracle中读写blob字段的问题

oracle中读写blob字段的问题

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

LOB?型分?BLOB和CLOB??:BLOB即二?制大型?像(Binary Large Object),?用於存?非文本的字?流??(如程序、?像、影音等)。而CLOB,即字符型大型?像(Character Large Object)。

作者:中国IT实验室 来源:中国IT实验室 2007年10月11日

关键字: Blob 读写 数据库 ORACLE

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共4页)

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

}


查看本文来源

    • 评论
    • 分享微博
    • 分享邮件