关于JDBC的菜鸟问题,高手接分
我碰到了这个问题,求高手帮助
下面是我写的一段代码,在每隔一段时间重复执行一次。
try{
…………
…………
sSql="INSERT INTO tad_taskexecinfo"+
" (task_id,cmdline,status,start_time)";
sSql += " VALUES("+mTaskExecRec.iTaskId+",?,"+mTaskExecRec.iStatus+
",'"+mTaskExecRec.sStartTime+"')";
psExecInfoStmt = mCon.prepareStatement(sSql);
psExecInfoStmt.setString(1,sCmdLine);
psExecInfoStmt.executeUpdate();
alTaskExecList.remove(i);//从列表中删除成功的语句
Scheduler.log.write("DBProxy::writeTaskExecInfo insert sql:"+sSql+" success\n");
Scheduler.log.write("cmdline:"+sCmdLine+"\n");
}catch(Exception e){
Scheduler.log.write("DBProxy::writeTaskExecInfo failed,Sql:"+sSql+e+"\n");
Scheduler.log.write("cmdline:"+sCmdLine+"\n");
e.printStackTrace();
blReconnectDB = true;
try{
tDb.sleep(3000);
}catch(InterruptedException err){
}
return -1;
}finally
{
if( psExecInfoStmt != null )
try{
psExecInfoStmt.close();
}catch(SQLException se)
{}
}
但在执行几次后, 会抛sql异常:
java.sql.SQLException: Bigger type length than Maximum
java.sql.SQLException: Refcursor value is invalid
这个异常以前没见过,是由什么引起的呢,我的代码有误吗?
为什么开始几次能够执行成功呢(insert的内容都是相同的)
另外, java.sql.SQLException: ORA-01000: maximum open cursors exceeded
是怎么回事,我在finally中不是已经将statement close掉了吗。难道是我没有正确
的释放资源吗?