public void createCostRecord() throws Exception
{
Context ctx = null;
Connection conn = null;
CallableStatement ps = null;
ResultSet rs = null;
boolean spReturn = false;
try{
ctx = new InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup("CSMWebAppjndi");
conn = ds.getConnection();
conn.setAutoCommit(true);
String sp = "{call usp_CreateCostRecords(?,?)}";
ps = conn.prepareCall(sp);
ps.setInt(1, 1000);
ps.setInt(2, 2000);
for(int i=0;i<3;i++)
{
ps.executeQuery();
}
} catch (NamingException e)
{
log.error(e,e);
} catch (SQLException e)
{
log.error(e,e);
}
catch(Exception e)
{
log.error(e,e);
}
finally {
if(rs!=null){
rs.close();
}
if(ps!=null){
ps.close();
}
if(conn != null){
conn.close();
}
if(ctx != null ){
ctx.close();
}
}
}
在调用上面的方法时,行号23 executeQuery在for循环的第一次迭代中工作正常, 在for循环的第二次迭代中,它在executeQuery上被触发,并且该过程永远不会完成执行。
但奇怪的是,当我尝试使用来自SQL开发人员的相同输入的相同过程时,它会被执行多次而没有任何打击。
任何人都可以帮助我理解为什么java中的过程会在第二次尝试时受到影响,但它在SQL开发人员中运行良好。