当前位置: 首页 > 图文教程 > 数据库 > Oracle > 使用Java和oracle实现BLOB字段的字符串读取

Oracle
常见的一些Oracle初学者的问题
ORACLE认证系统概述
数据库考试简介:Oracle认证
Oracle认证基础知识介绍
ADO连接Oracle Access示例及记录集处理源码
SQL Server和MySQL的安全性分析
用Oracle和SQL Server数据库组合利弊分析
Oracle 11g分区功能新革命
Flashback Query 恢复误删除的数据
基于Oracle高性能动态SQL程序开发
怎样在Oracle 9i中正确的转换时区
Oracle 10g导出的数据库能否导入Oracle 9i?
增加Distinct后查询效率反而提高
Oracle限制返回结果集的大小
Java语言数据库操作的基本流程
美国甲骨文(ORACLE)公司入驻渝中区大都会商厦
RHEL AS4上安装oracle 10R2 的方法
DB中如何查询Table占用空间的大小
编写高质量高性能的MySQL语法
Oracle数据库自动备份的具体实现步骤

Oracle 中的 使用Java和oracle实现BLOB字段的字符串读取


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-30   浏览: 205 ::
收藏到网摘: n/a

  java能够调用Oracle的存储过程,反之oracle也能用java来开发外部存储过程,这样java和oracle的相互界限就已经不明确了。
  当然关系型数据库最好做自己应该做的事情而不是大包大揽做所有的非数据库应该做的事情。
  ——开发java类
  create or replace and compile java source named BLOBObject as
  package MyOracle.BLOB; --自己定义的package
  import java.io.*; --外部引用到的java包
  import oracle.sql.*;
  public class BLOBObject
  {
  public static String ConvertBLOBtoString(oracle.sql.BLOB BlobContent)
  {
  byte[] msgContent= BlobContent.getBytes(); //BLOB转换为字节数组
  byte[] bytes; //BLOB临时存储字节数组
  String newStr = ""; //返回字符串
  int i=1; //循环变量
  long BlobLength; //BLOB字段长度
  try
  {
  BlobLength=BlobContent.length(); //获取BLOB长度
  if (msgContent == null || BlobLength==0) //如果为空,返回空值
  {
  return "";
  }
  else //处理BLOB为字符串
  {
  /*
  while(i
  {
  bytes= BlobContent.getBytes(i,1024) ;
  i=i+1024;
  newStr = newStr+new String(bytes,"gb2312";
  }
  */
  newStr = new String(BlobContent.getBytes(1,900),"gb2312"+"...."; //简化处理,只取前900字节
  return newStr;
  }
  }
  catch(Exception e) //oracle异常捕获
  {
  e.printStackTrace();
  }
  return newStr;
  }
  }
  ——然后在Oracle中把这个类导入成为一个函数,执行命令
  create or replace function ConvertBLOB(blobObject BLOB)
  return varchar2
  as language java name
  'MyOracle.BLOB.BLOBObject.ConvertBLOBtoString(oracle.sql.BLOB) return java.lang.String';
  ——执行相应的操作
  select ConvertBLOB(BLOBField),dbms_lob.getlength(BLOBField),BLOBFieldfrom TableName
  以上代码均在PL/SQL developer中开发并调试通过。