转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> ORACLE >> 正文
通过JDBC操纵Oracle数据库LOB字段的几种情况分析         ★★★★

通过JDBC操纵Oracle数据库LOB字段的几种情况分析

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2718 更新时间:2009/4/22 22:08:16
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) {

/* 出错回滚 */

上一页  [1] [2] [3]  下一页


[电脑应用]用C#动态创建Access数据库  [Web开发]asp 在线备份与恢复sqlserver数据库代码详解
[电脑应用]教你如何远程管理MSSQL数据库  [其他]关于数据库优化查询计划的方法总结
[电脑应用]Linux数据库大比拚  [JAVA开发]Java连接各种数据库的实例
[聊天工具]QQ IP数据库Build 0825 纯真版__天极Yesky  [系统软件]EXP-00008: ORACLE error 904 encountered的解决方…
[系统软件]利用crontab系统每天定时备份MySQL数据库  [系统软件]备份与恢复Windows2003的AD数据库
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台