科技行者

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

知识库

知识库 安全导航

至顶网软件频道ORACLE大型数据对象LOB几种情况的示范类

ORACLE大型数据对象LOB几种情况的示范类

  • 扫一扫
    分享文章到微信

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

  import java.io.*;   import java.util.*;   import java.sql.*;   public class LobPros   {      /**   * ORACLE驱动程序   */   priv

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

关键字: 数据库 ORACLE

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

  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

查看本文来源

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

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章