用java和oracle实现BLOB字段的字符串读取【转】
来源:互联网 发布:jquery数组清空 编辑:程序博客网 时间:2024/06/08 04:38
阅读了一个帖子“有没有可能写出比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<BlobLength) //循环处理字符串转换,每次1024;Oracle字符串限制最大4k
- {
- 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中开发并调试通过,很有意思
0 0
- 用java和oracle实现BLOB字段的字符串读取【转】
- 用java和oracle实现BLOB字段的字符串读取【转】
- 用oracle的java存储过程实现BLOB字段的字符串读取
- java读取mysql数据库的blob字段和Oracle数据库的Blob字段的区别【读取properties文件】
- 使用JAVA读取ORACLE BLOB字段实现上传下载
- oracle和mysql的Blob字段的读取和插入
- C# 读取和写入oracle的blob字段的方法
- JAVA读取Oracle数据库BLOB字段
- JAVA读取Oracle数据库BLOB字段
- java读取oracle数据库中blob字段
- C#读取oracle的Blob字段
- c#读取Oracle的Blob字段
- java 读取Oracle的clob,blob转换为字符串
- 用vba插入字符串到Oracle的BLOB字段
- 读取oracle blob字符串
- Java操纵oracle的CLOB和BLOB字段
- blob字段的读取
- 使用java操作oracle的blob字段
- Android蓝牙4.0之玩爆智能穿戴、家具(一)
- 士兵杀敌(二)
- Julia分形
- JAVA 第8章jdbc
- 云计算Docker实践
- 用java和oracle实现BLOB字段的字符串读取【转】
- eclipse通过link安装aptana3.6.1插件
- Spring Boot干货系列:(四)Thymeleaf篇
- 360浏览器扩展体验
- Centos 6.4 python 2.6 升级到 2.7
- Java虚拟机工作原理
- Git学习文档之一 学习文档-并行开发
- MySql创建多实例
- 串口、COM口、TTL、RS-232、RS-485区别详解