请教jdbc操作Oracle中CLOB或BLOB 不可能的,试一下下面代码:java.sql.Clob c = resultset.getClob(1);oracle.sql.CLOB clob = (oracle.sql.CLOB) c; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to GJA106(中文字符):你给的代码我已经试过了,还是报oracle.sql.CLOB clob = (oracle.sql.CLOB) c;这行错啊。郁闷死了,不知道为什么会有这种错的。 CLOB clob = ((OracleResultSet)rset).getCLOB (1); 这个问题碰到过,忘了当时的解决方式。代码 CLOB clob = ((OracleResultSet)rset).getCLOB (3);是参考Oracle自代的deom,楼主可以自己去查。目录:%ORACLE_HOME%\ora90\jdbc\demo\samples\oci8\object-samples 我用了CLOB clob = ((OracleResultSet)rset).getCLOB (1);还是报ClassCastException的错啊,请想想看你是怎么解决的吧 简单把你的代码发给我吧,留引用包部分和操作CLOB的方法。email:[email protected] 我已经发email给你了,谢谢你,帮我看看,郁闷死了 楼主以下是我的代码,运行正常,在你机器上试一下。import java.util.ArrayList;import java.util.Hashtable;import java.util.List;import java.sql.*;import oracle.jdbc.*;import oracle.sql.*;/*import com.ninetowns.czweb.dao.NewsDAO;import com.ninetowns.czweb.po.NewsPO;import com.ninetowns.czweb.db.*;import com.ninetowns.czweb.util.ClobUtil;*/public class Oracle { public Oracle() { } public boolean addNews() { try{ DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@192.168.0.193:1521:oratest","OCP", "OCP"); PreparedStatement ps = conn.prepareStatement("select NR from test where ID=5"); ResultSet rs = ps.executeQuery(); while(rs.next()){ oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob(1); System.out.println(clob); } rs.close(); ps.close(); conn.close(); }catch(Exception e){ e.printStackTrace(); }finally{ } return true; } public static void main(String[] args) { Oracle oracle = new Oracle(); oracle.addNews(); }} 我发现问题了,我用的Connection是连接池得到的,就是应为这个才出错的,如果是一般得到的Connection就没有什么问题。还有一个问题是:如何从数据库中读出来Clob,我的clob里面全是字符。我要把clob值给String型,以方便在页面上显示。 你如果用的是weblogic容器那么oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob(1);替换成:weblogic.jdbc.vendor.oracle.OracleThinClob clob=(weblogic.jdbc.vendor.oracle.OracleThinClob )rs.getClob(1); tomcat有类型转换错误.....把你应用程序目录WEB-INF\LIB 下的驱动移走.... 以下代码是用于产品中的,在weblogic下跑:Clob clob = resultset.getClob(1);out = ( (weblogic.jdbc.common.OracleClob) clob).getCharacterOutputStream();//读CLOB内容Clob myClob = rs.getClob("NR");Reader readClob = myClob.getCharacterStream();int leg = (int) myClob.length();char[] c = new char[ (int) myClob.length()];for (int i = 0; i < leg; i++) { readClob.read(c);}楼主,这些功能Oracle都自带有的! 我的奇怪的问题,用了tomcat的连接池就会报类型转换错误,如果直接用连接数据库就没有错。不知道是什么原因,有哪位高手碰到过这样的问题或是知道如何解决的呢? 关于线程的问题? 在线等---求救!自动生成字段问题! 关于spring多配置文件-分模块开发的问题 URL传递参数删除记录的问题(急) tomcat安装问题 sessionbean和entitybean怎么结合起来用的 最简单的sturts出问题了 jbuilder下如何生成安装程序,或者直接执行的程序啊? 为什么Java Petstore安装后无法使用显示404错误? 哪里有weblogic6.1 sp4 下载!!! 用struts1.2的帮帮忙 为什么要将tomcat与apache整合?初学者问题
还是报ClassCastException的错啊,请想想看你是怎么解决的吧
email:[email protected]
import java.util.Hashtable;
import java.util.List;
import java.sql.*;import oracle.jdbc.*;
import oracle.sql.*;/*import com.ninetowns.czweb.dao.NewsDAO;
import com.ninetowns.czweb.po.NewsPO;
import com.ninetowns.czweb.db.*;
import com.ninetowns.czweb.util.ClobUtil;*/public class Oracle {
public Oracle() {
} public boolean addNews() {
try{
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn =
DriverManager.getConnection ("jdbc:oracle:thin:@192.168.0.193:1521:oratest","OCP", "OCP");
PreparedStatement ps = conn.prepareStatement("select NR from test where ID=5");
ResultSet rs = ps.executeQuery();
while(rs.next()){
oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob(1);
System.out.println(clob);
}
rs.close();
ps.close();
conn.close();
}catch(Exception e){
e.printStackTrace();
}finally{
}
return true;
} public static void main(String[] args) {
Oracle oracle = new Oracle();
oracle.addNews();
}
}
那么oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob(1);
替换成:
weblogic.jdbc.vendor.oracle.OracleThinClob clob=(weblogic.jdbc.vendor.oracle.OracleThinClob )rs.getClob(1);
Clob clob = resultset.getClob(1);
out = ( (weblogic.jdbc.common.OracleClob) clob).getCharacterOutputStream();//读CLOB内容
Clob myClob = rs.getClob("NR");
Reader readClob = myClob.getCharacterStream();
int leg = (int) myClob.length();
char[] c = new char[ (int) myClob.length()];
for (int i = 0; i < leg; i++) {
readClob.read(c);
}楼主,这些功能Oracle都自带有的!