急 java db2 问题
我有段下面的程序:
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet PidCntRst=null;
try
{
conn = EjbContext.getDBConnection();
if(conn==null)
{
throw new Exception("无法建立数据库连接");
}
String sPidSql="select count(*) from t_pub_pid_ctrl";
sPidSql+=" where task_no= ? ";
sPidSql+=" and substr(flag,1,1)='0'";
pstmt = conn.prepareStatement(sPidSql);
pstmt.setString(1,sTaskNo);
pstmt.execute();
PidCntRst = pstmt.getResultSet();
PidCntRst.next();
iTaskPidCnt=PidCntRst.getInt(1);
Debug.log("任务 "+sTaskNo+" 有 "+iTaskPidCnt+" 个线程在处理");
}
catch(Exception e)
{
Debug.log("统计任务 "+sTaskNo+" 进程控制信息错误:"+e);
if(conn!=null)
{
conn.close();
}
throw new Exception("统计任务 "+sTaskNo+" 进程控制信息错误:"+e);
}
finally
{
if(PidCntRst!=null)
{
PidCntRst.close();
}
if(pstmt!=null)
{
pstmt.close();
}
if(conn!=null)
{
conn.close();
}
}
/* 清除未启动的报表 */
Debug.log("清除任务 "+sTaskNo+" 未启动的进程");
sTaskFlg=hTaskInf.get("flag").toString().trim();
Connection conn1=null;
PreparedStatement pstmt1=null;
try
{
String sDelSql="delete from t_pub_pid_ctrl";
sDelSql+=" where task_no='"+sTaskNo+"'";
Debug.log("清除任务SQL:"+sDelSql);
pstmt1 = conn1.prepareStatement(sDelSql);
pstmt1.executeUpdate();
}
catch(SQLException e)
{
if(e.getErrorCode()==100)
{
Debug.log("任务号 "+sTaskNo+" 对应的任务进程不存在");
throw new Exception("任务号 "+sTaskNo+" 对应的任务进程不存在");
}
else
{
Debug.log("删除任务号 "+sTaskNo+" 对应的任务进程错误:"+e);
throw new Exception("删除任务号 "+sTaskNo+" 对应的任务进程错误:"+e);
}
}
catch(Exception e)
{
Debug.log("删除任务号 "+sTaskNo+" 对应的任务进程信息错误:"+e);
throw new Exception("删除任务号 "+sTaskNo+" 对应的任务进程信息错误:"+e);
}
finally
{
if(pstmt1!=null)
pstmt.close();
if(conn1!=null)
conn1.close();
}
在运行delete 段程序时抛出个错误:
COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] CLI0116E Invalid transaction state. SQLSTATE=25000
请问如何解决????急啊