如何用JSP处理Oracle中CLOB字段

[复制链接]
查看11 | 回复1 | 2006-5-12 13:14:00 | 显示全部楼层 |阅读模式
我的代码如下:编译没有错误,但是运行后会抛出(java.lang.ClassCastException: oracle.sql.CLOB)
public void insertClob (String id,String filepath,String fileType){
try{

myConnection = getConnection();

boolean defaultCommit = myConnection.getAutoCommit();

myConnection.setAutoCommit(false);

CLOB clob=null;

String columnName ="";

if (fileType.equals("vrml&quot

) columnName="SCANFILE_VRML";

PreparedStatement pstmt = myConnection.prepareStatement("update EMTM_CUS_SCANFILE set "+columnName+"=empty_clob() where SCANFILE_ID=?&quot

;

pstmt.setString(1,id);

pstmt.executeUpdate();

pstmt=myConnection.prepareStatement("select "+columnName+" from EMTM_CUS_SCANFILE where SCANFILE_ID=? for update&quot

;

pstmt.setString(1,id);

ResultSet rst=pstmt.executeQuery();

oracle.jdbc.driver.OracleResultSet ors =(oracle.jdbc.driver.OracleResultSet)rst;

if (rst.next()) clob=(CLOB)ors.getClob(1);



String fileName=filepath;

File f=new File(fileName);

pstmt = myConnection.prepareStatement("update EMTM_CUS_SCANFILE set "+columnName+"=? where SCANFILE_ID=?&quot

;

if (clob==null) System.out.println("clob is null&quot

;
Writer out=((CLOB) clob).getCharacterOutputStream();

int count = -1, total = 0;



FileReader fr = new FileReader(f);

BufferedReader rd = new BufferedReader(fr);

String record=rd.readLine();

while(record!=null)
{

record = record + "\n";

out.write(record);

record=rd.readLine();
}

out.close();


pstmt.setClob(1,(Clob) clob);[/COLOR]

pstmt.setString(2,id);

pstmt.executeUpdate();

pstmt.close();

myConnection.commit();
}
回复

使用道具 举报

千问 | 2006-5-12 13:14:00 | 显示全部楼层
我有在其它网页上看到
pstmt.setClob(1,(Clob) clob);的处理,定义是:
PreparedStatement pstmt=。。。
CLOB clob=。。。
从抛出的异常来看,好像是CLOB类型无法转换为Clob。
请问是不是这样的?
如果是的话,那我这些代码该如何改?
先谢谢啦!
麻烦大家指教!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行