中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > Oracle
Oracle大型数据对象LOB几种情况的示范类
作者:佚名 时间:2007-06-20 16:10 出处:ccidnet.com 责编:月夜寒箫
              摘要:Oracle大型数据对象LOB几种情况的示范类
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

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有