java读取oracle的blob字段空指针错误!!!太奇怪了 oracle里我不清楚,不过在DB2里面,你读出一个数据前要rs.next()一下,也就是说要从rs.next()才是第一条记录,不然就全是null,你试着加上这句话看行不行! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 java.sql.Blob bb = rs.getBlob("sfile"); //bb为null呵呵,oracle的blob不是这么玩的,应该这样java.sql.Blob bb = ((OracleResultSet)rs).getBLOB("sfile");BLOB是oracle实现了bolb的接口的类,你可以参考oracle的jdbc的文档.他需要的包就是oracle带的classes12.jar了,和weblogic没有关系. to fastmask: 不对吧,这样要报类型错误的。楼主的问题可能是因为未提交 to 楼上们!!!------rs.next()才是第一条记录,不然就全是null,你试着加上这句话看行不行!看到这句没有?String fileName = rs.getString("filename"); //有值我第一个字段都有值了,证明我肯定取的是第一条记录拉,怎么会没有rs.next呢?-----楼主有没有提交啊,是不是在数据库中添加数据却没有提交怎么可能,我在没有运行系统的时候,直接在数据库里面查询都可以查到数据,没看到:(在数据库中执行查询,确定对应blob字段有值)、buffer我调试过了,保证非空,且执行完毕后在数据库中查询blob字段显示有值:(OraBlob)------呵呵,oracle的blob不是这么玩的,应该这样……这个样子我试过了,没看到:使用(OracleResultSet)rs).getBLOB("sfile");则必须使用weblogic自带一个weblogic.*.*.OracleResultSet对象。同样结果为null大家的帮忙我很感谢,但希望看清楚我说明的那些,那样就可以免掉不必要的讨论了……我现在及其怀疑数据库本身有问题……谁能给我个读取oracle的blob数据转换成byte[]数组的可运行并成功的实例??????????? String result=""; BLOB bCont; byte[] data; Statement stament=null; try { stament=conn.createStatement();//conn是Connection的对象 resultSet=stament.executeQuery("select recvdata from ComLog "+ "where SIComLogid="+id;//id是参数 while(resultSet.next()) { //分析接收的数据 result="\n接收的数据\n----------------------------\n"; bCont = ((OracleResultSet)resultSet).getBLOB("recvdata"); if(bCont==null||bCont.length()==0) { result+="无数据"; } else { data=bCont.getBytes(1,(int)bCont.length());//这个就是数据 result+=GetDesc(data); } result+="\n------------------\n"; break;}这是我现在用的代码,有些业务方面的东西我删掉了,程序正常运行,没有问题的.你别告诉我不行.嘿嘿 如果用db2或者jdbc-odbc该如何写啊 帮我看看这个http://expert.csdn.net/Expert/topic/1226/1226149.xml?temp=.7509882 to : fastmask(我心烦) 我使用了你这种方法,其中OracleResultSet和BLOB来自import oracle.jdbc.OracleResultSet;import oracle.sql.BLOB;编译可以成功,但是,在weblogic下运行的时候,blob = ((OracleResultSet)rs).getBLOB(columnName);处报出错误如下:java.lang.ClassCastException: weblogic.jdbc.rmi.SerialResultSet应该是说rs对象为weblogic.jdbc.rmi.SerialResultSet这个类型,这样子直接造型错误。我试过将OracleResultSet改为SerialResultSet类型,同样为null难道是数据库连接上的问题么?我使用的是weblogic的连接池,该怎么解决呢?? 那你就跟踪调试一下看看那个rs到底是什么类型了,后者把rs.toString(),可以看到实际类型,然后按照类型进行转换了。然后你看看weblogic.jdbc.rmi这个的帮助文档,也许他对这个blob也有自己的实现。 调试过了,还是没有法子解决阿……同样为null不知道哪位大虾能给个保证可以执行成功的,且和fastmask方法不同的实例阿?? 关于String的引用传递的问题,求指教!!! 问一个多线程中阻塞的问题 请问正则表达式可以进行字符串的检索吗 这段代码在Eclipse里面可以运行,在命令行界面就不行了呢? JBuilder 2007 使用问题 sswater(水与争锋)请进,其它朋友能解决也进来,关于正则式 如何在java里面显示pdf文件呢 不能发表帖子,你不能发这么多可用分 applet中如何让一个图片成为按钮? java的性能-急需解决!!! 请看原程序!!为什么不显水仙化数啊! 关于RandomAccessFile里面的 readChar()方法的疑问:
呵呵,oracle的blob不是这么玩的,应该这样java.sql.Blob bb = ((OracleResultSet)rs).getBLOB("sfile");
BLOB是oracle实现了bolb的接口的类,你可以参考oracle的jdbc的文档.
他需要的包就是oracle带的classes12.jar了,和weblogic没有关系.
------rs.next()才是第一条记录,不然就全是null,你试着加上这句话看行不行!
看到这句没有?String fileName = rs.getString("filename"); //有值
我第一个字段都有值了,证明我肯定取的是第一条记录拉,怎么会没有rs.next呢?-----楼主有没有提交啊,是不是在数据库中添加数据却没有提交
怎么可能,我在没有运行系统的时候,直接在数据库里面查询都可以查到数据,没看到:(在数据库中执行查询,确定对应blob字段有值)、buffer我调试过了,保证非空,且执行完毕后在数据库中查询blob字段显示有值:(OraBlob)------呵呵,oracle的blob不是这么玩的,应该这样……
这个样子我试过了,没看到:
使用(OracleResultSet)rs).getBLOB("sfile");则必须使用weblogic自带一个weblogic.*.*.OracleResultSet
对象。同样结果为null
大家的帮忙我很感谢,但希望看清楚我说明的那些,那样就可以免掉不必要的讨论了……我现在及其怀疑数据库本身有问题……
谁能给我个读取oracle的blob数据转换成byte[]数组的可运行并成功的实例???????????
BLOB bCont;
byte[] data;
Statement stament=null;
try
{
stament=conn.createStatement();//conn是Connection的对象
resultSet=stament.executeQuery("select recvdata from ComLog "+
"where SIComLogid="+id;//id是参数
while(resultSet.next())
{ //分析接收的数据
result="\n接收的数据\n----------------------------\n";
bCont = ((OracleResultSet)resultSet).getBLOB("recvdata");
if(bCont==null||bCont.length()==0)
{
result+="无数据";
}
else
{
data=bCont.getBytes(1,(int)bCont.length());//这个就是数据
result+=GetDesc(data);
}
result+="\n------------------\n"; break;
}
这是我现在用的代码,有些业务方面的东西我删掉了,程序正常运行,没有问题的.你别告诉我不行.嘿嘿
我使用了你这种方法,其中OracleResultSet和BLOB来自
import oracle.jdbc.OracleResultSet;
import oracle.sql.BLOB;
编译可以成功,但是,在weblogic下运行的时候,
blob = ((OracleResultSet)rs).getBLOB(columnName);
处报出错误如下:
java.lang.ClassCastException: weblogic.jdbc.rmi.SerialResultSet应该是说rs对象为weblogic.jdbc.rmi.SerialResultSet这个类型,这样子直接造型错误。
我试过将OracleResultSet改为SerialResultSet类型,同样为null
难道是数据库连接上的问题么?我使用的是weblogic的连接池,该怎么解决呢??
同样为null
不知道哪位大虾能给个保证可以执行成功的,且和fastmask方法不同的实例阿??