首页 > 开发 > Java > 正文

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

2024-07-14 08:44:01
字体:
来源:转载
供稿:网友

  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中开发并调试通过。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表