为什么用WEBLOGIC的连接池存储大对象不成功?大家帮我看看!!! Oracles应该是连接池对应的DataSource才对不应该是连接池的名字估计是这个问题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是啊,Oracles 是DATASOURCE 的JNDI名,如果是存储一般的数据是可以通过的! 抛出de异常是java.lang.ClassCastException 是类型转换错误这个错误可以这么描述int a = 10;String b = (String) a;就会产生这个错误while (rs.next()) { Blob blob = rs.getBlob(1); InputStream in = blob.getBinaryStream(); FileOutputStream out = new FileOutputStream("d:/dap53lang.exe"); byte[] buffer = new byte[1024]; int bufsize = 0; while ( (bufsize = in.read(buffer)) != -1) { out.write(buffer, 0, bufsize); } out.close(); in.close(); }这是我写的 自己看看吧 Blob blob = rs.getBlob(1);这句话编译通过不了! 现在的问题是oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("");转换时出错! import java.sql.*;while (rs.next()) { Blob blob = rs.getBlob(1); InputStream in = blob.getBinaryStream(); FileOutputStream out = new FileOutputStream("d:/dap53lang.exe"); byte[] buffer = new byte[1024]; int bufsize = 0; while ( (bufsize = in.read(buffer)) != -1) { out.write(buffer, 0, bufsize); } out.close(); in.close(); } oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("");这句为什么不能? ELONGSSS (采女孩的小蘑菇) 我很同情你,也同情我自己,我也遇到了这种问题,尚未真正解决,回帖的朋友说的可能都是没用连接池的情况,解决不了问题。如果要临时解决办法,就是回避这个问题,不用连接池,Connection conn = null;try{ Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.201:1521:extimes","system", "v");}catch (Exception e) { e.printStackTrace();}不会有任何问题,但是用了连接池就会抛出类型转换异常java.lang.ClassCastException如果知道了解决连接池存LOB对象的方法,希望能与我分享! 经过我在bea站点的寻找,总算知道解决问题的方法了,weblogic连接池体工队oracle及其lob的支持,但却是通过weblogic自己提供的JDBC类来实现的,对于oracle jdbc的类却不支持。所以代码中引用的oracle jdbc的类替换成weblogic 提供的类就可以解决问题了ResultSet rs = stmt.executeQuery("SELECT .... FOR UPDATE");改为weblogic.jdbc.vendor.oracle.OracleResultSet rs = (weblogic.jdbc.vendor.oracle.OracleResultSet)stmt.executeQuery("SELECT .... FOR UPDATE");oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("MINJIAN");改为weblogic.jdbc.rmi.SerialOracleClob clob = (weblogic.jdbc.rmi.SerialOracleClob)rs.getClob("MINJIAN");这些我已经测试过了,问题解决。 java.sql.Blob是接口在oracle的jdbc中oracle.sql.BLOB实现该接口。下面是其中的一部分:package oracle.sql;import java.io.*;import java.sql.Blob;import java.sql.SQLException;import oracle.jdbc.dbaccess.DBError;import oracle.jdbc.driver.*;public class BLOB extends Datum implements Blob{ protected BLOB() { //注意这里是protected方法 } public BLOB(OracleConnection oracleconnection) throws SQLException { this(oracleconnection, null); } public BLOB(OracleConnection oracleconnection, byte abyte0[]) throws SQLException { super(abyte0); if(oracleconnection != null) m_conn = oracleconnection; else DBError.check_error(68, "Connection is null"); m_dbaccess = oracleconnection.createBlobDBAccess(); m_dbChunkSize = -1; }...}还记得Collection吧?可以用java.util.Collection aList = new java.util.ArrayList();声明一个实例。此时aList可以用ArrayList强制转换后使用java.util.ArrayList的所有方法。对于oracle.sql.BLOB同理,所以你应该使用java.sql.Blob而不是oracle.sql.BLOB。不要忘了oracle.sql.BLOB需要声明实例才可以使用。 同意yajiu99,并对他表示崇高的敬意!我们需要这样的亲身实践的好同志!在三个代表的指引下为中国的软件行业贡献自己的力量! 但是怎样写入数据库,像那样转换过来的CLOB没有一些有用的方法提供啊! Java的Socket长连接掉线问题! 购物系统如何实现? 压缩编码后怎么存入文件 jdbc 连接sql server的问题,我都快崩溃了!那位大哥能帮帮忙? 急:NIO实现的chat,客户端会滞后 再来求一个JAVA字符串分割的小程序!!!!! JFrame的问题,谢谢! 内有代码,编译不通过,为什么? 关于JAVA的问题。来者有分,绝不食言! 如何将数据库通过JDBC接收并将字段关键字连成一棵树(每一分支最多64节点) applet,IE里直接打开可以浏览,但是通过web服务器浏览就不行了,但netscape没问题 散分了!!今天第一天正式上班啦。。。..
int a = 10;
String b = (String) a;
就会产生这个错误
while (rs.next()) {
Blob blob = rs.getBlob(1);
InputStream in = blob.getBinaryStream();
FileOutputStream out = new FileOutputStream("d:/dap53lang.exe");
byte[] buffer = new byte[1024];
int bufsize = 0;
while ( (bufsize = in.read(buffer)) != -1) {
out.write(buffer, 0, bufsize);
}
out.close();
in.close();
}
这是我写的 自己看看吧
转换时出错!
Blob blob = rs.getBlob(1);
InputStream in = blob.getBinaryStream();
FileOutputStream out = new FileOutputStream("d:/dap53lang.exe");
byte[] buffer = new byte[1024];
int bufsize = 0;
while ( (bufsize = in.read(buffer)) != -1) {
out.write(buffer, 0, bufsize);
}
out.close();
in.close();
}
这句为什么不能?
Connection conn = null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.201:1521:extimes","system", "v");
}catch (Exception e) {
e.printStackTrace();
}
不会有任何问题,但是用了连接池就会抛出类型转换异常java.lang.ClassCastException
如果知道了解决连接池存LOB对象的方法,希望能与我分享!
ResultSet rs = stmt.executeQuery("SELECT .... FOR UPDATE");改为
weblogic.jdbc.vendor.oracle.OracleResultSet rs = (weblogic.jdbc.vendor.oracle.OracleResultSet)stmt.executeQuery("SELECT .... FOR UPDATE");
oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("MINJIAN");改为
weblogic.jdbc.rmi.SerialOracleClob clob = (weblogic.jdbc.rmi.SerialOracleClob)rs.getClob("MINJIAN");
这些我已经测试过了,问题解决。
在oracle的jdbc中oracle.sql.BLOB实现该接口。
下面是其中的一部分:
package oracle.sql;
import java.io.*;
import java.sql.Blob;
import java.sql.SQLException;
import oracle.jdbc.dbaccess.DBError;
import oracle.jdbc.driver.*;
public class BLOB extends Datum implements Blob
{
protected BLOB()
{ //注意这里是protected方法 } public BLOB(OracleConnection oracleconnection)
throws SQLException
{
this(oracleconnection, null);
} public BLOB(OracleConnection oracleconnection, byte abyte0[])
throws SQLException
{
super(abyte0);
if(oracleconnection != null)
m_conn = oracleconnection;
else
DBError.check_error(68, "Connection is null");
m_dbaccess = oracleconnection.createBlobDBAccess();
m_dbChunkSize = -1;
}
...
}还记得Collection吧?可以用java.util.Collection aList = new java.util.ArrayList();声明一个实例。
此时aList可以用ArrayList强制转换后使用java.util.ArrayList的所有方法。
对于oracle.sql.BLOB同理,所以你应该使用java.sql.Blob而不是oracle.sql.BLOB。
不要忘了oracle.sql.BLOB需要声明实例才可以使用。