搜索
首页 电脑/网络 软件 系统软件

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

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

全部回答

2017-07-26

50 0
    阅读了一个帖子“有没有可能写出比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的入门心得。
    。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
系统软件
硬件
电脑装机
程序设计
互联网
操作系统/系统故障
笔记本电脑
反病毒
百度
软件
软件
系统软件
多媒体软件
办公软件
网络软件
图像处理软件
系统软件
系统软件
举报
举报原因(必选):
取消确定举报