我的代码如下:编译没有错误,但是运行后会抛出(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"
) columnName="SCANFILE_VRML";
PreparedStatement pstmt = myConnection.prepareStatement("update EMTM_CUS_SCANFILE set "+columnName+"=empty_clob() where SCANFILE_ID=?"
;
pstmt.setString(1,id);
pstmt.executeUpdate();
pstmt=myConnection.prepareStatement("select "+columnName+" from EMTM_CUS_SCANFILE where SCANFILE_ID=? for update"
;
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=?"
;
if (clob==null) System.out.println("clob is null"
;
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();
}
|