Oracles应该是连接池对应的DataSource才对
不应该是连接池的名字估计是这个问题

解决方案 »

  1.   

    是啊,Oracles 是DATASOURCE 的JNDI名,如果是存储一般的数据是可以通过的!
      

  2.   

    抛出de异常是java.lang.ClassCastException
      

  3.   

    是类型转换错误这个错误可以这么描述
    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();
          }
    这是我写的  自己看看吧
      

  4.   

    Blob blob = rs.getBlob(1);这句话编译通过不了!
      

  5.   

    现在的问题是oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("");
    转换时出错!
      

  6.   

    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();
          }
      

  7.   

    oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("");
    这句为什么不能?
      

  8.   

    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对象的方法,希望能与我分享!
      

  9.   

    经过我在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");
    这些我已经测试过了,问题解决。
      

  10.   

    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需要声明实例才可以使用。
      

  11.   

    同意yajiu99,并对他表示崇高的敬意!我们需要这样的亲身实践的好同志!在三个代表的指引下为中国的软件行业贡献自己的力量!
      

  12.   

    但是怎样写入数据库,像那样转换过来的CLOB没有一些有用的方法提供啊!