网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  Oracle大型数据对象LOB几种情况的示范类     
  文章作者:未知  文章来源:未知  
  查看:276次  录入:管理员--2007-06-10  
  import java.io.*;
  import java.util.*;
  import java.sql.*;
  public class LobPros
  {
  
  /**
  * ORACLE驱动程序
  */
  private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
  
  /**
  * ORACLE连接用URL
  */
  private static final String URL = "jdbc:oracle:thin:@test2000:1521:orac";
  
  /**
  * 用户名
  */
  private static final String USER = "user";
  
  /**
  * 密码
  */
  private static final String PASSWORD = "pswd";
  
  /**
  * 数据库连接
  */
  private static Connection conn = null;
  
  /**
  * SQL语句对象
  */
  private static Statement stmt = null;
  
  /**
  * @roseuid 3EDA089E02BC
  */
  public LobPros()
  {
  
  }
  
  /**
  * 往数据库中插入一个新的CLOB对象
  *
  * @param infile - 数据文件
  * @throws java.lang.Exception
  * @roseuid 3EDA04A902BC
  */
  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);
  }
  
  /**
  * 修改CLOB对象(是在原CLOB对象基础上进行覆盖式的修改)
  *
  * @param infile - 数据文件
  * @throws java.lang.Exception
  * @roseuid 3EDA04B60367
  */
  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);
  }
  
  /**
  * 替换CLOB对象(将原CLOB对象清除,换成一个全新的CLOB对象)
  *
  * @param infile - 数据文件
  * @throws java.lang.Exception
  * @roseuid 3EDA04BF01E1
  */
  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);
  }
  
  /**
  * CLOB对象读取
  *
  * @param outfile - 输出文件名
  * @throws java.lang.Exception
  * @roseuid 3EDA04D80116
  */
  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对象
  *
  * @param infile - 数据文件
  * @throws java.lang.Exception
  * @roseuid 3EDA04E300F6
  */
  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);
  }
  
  /**
  * 修改BLOB对象(是在原BLOB对象基础上进行覆盖式的修改)
  *
  * @param infile - 数据文件
  * @throws java.lang.Exception
  * @roseuid 3EDA04E90106
  */
  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 BufferedInp

 
 
上一篇: 深入研究Oracle数据库中空间管理的方法    下一篇: Oracle 的一些基本知识,应该知道
  相关文档
在Oracle实例间移动SQL调整工具集简介 04-11
数据字典表truncate掉将导致数据库不可用 05-28
oracle与data guard环境中重建控制文件 (1) 03-27
通过分析SQL语句的执行计划优化SQL(二) 08-05
在oracle 11g数据库中实现自我调整功能 07-24
解决不同字符集数据库间的数据同步问题 03-07
Oracle数据库密码文件的使用和维护 01-15
怎样在oracle里用存储过程定期分割表 (1) 01-25
教你怎样在oracle数据库中高速导出/导入 (1) 10-27
在oracle中添加用户 赋权 修改密码 解锁 05-29
简单介绍Oracle数据库去除别名的方法 05-13
如何在oracle数据库中使用java存储过程 08-12
超大型oracle数据库应用系统的设计方法 (1) 05-04
如何使用oracle提供的字符扫描工具csscan 03-06
使用_disable_logging即可禁止日志的生成 (1) 05-16
把非归档模式的Oracle数据改成归档模式 09-29
轻松掌握oracle peeking 绑定变量的控制 11-15
细化解析:Oracle数据库后台进程的功能 09-01
单机创建物理Oracle9istandby数据库 05-13
Oracle数据库物理文件空间设置方法 04-12
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息