爱问知识人 爱问教育 医院库

如何用Java和oracle实现BLOB字段的字符串读取?

首页

如何用Java和oracle实现BLOB字段的字符串读取?

如何用Java和oracle实现BLOB字段的字符串读取?

提交回答

全部答案

    2017-07-26 12:43:28
  •   阅读了一个帖子“有没有可能写出比Oracle函数更快的外部存储过程”(http://www。itpub。net/thread-1117461-1-1。html)
    突发灵感,加上原来有一个需求,需要从BLOB字段(本来就是字符型的内容)中直接读取成为字符串,需要java开发人员的支持,想了想与其求人不如求己,
    oracle。
      sql。BLOB的相关文档参看(http://www。princeton。edu/~storacle/jdbc8_doc/oracle。sql。BLOB。html) 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中开发并调试通过,很有意思 编辑特别推荐: oracle认证考试费用 Oracle的入门心得。

    B***

    2017-07-26 12:43:28

类似问题

换一换
  • 系统软件 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):