2019-12-03 10:53
@Shanice 按你说的方法启动项目后报错:
java.lang.NoSuchMethodError: com.alibaba.fastjson.serializer.SerializeConfig.put(Ljava/lang/reflect/Type;Lcom/alibaba/fastjson/serializer/ObjectSerializer;)Z
用的jar包版本是: fastjson-1.2.5.jar
2019-04-21 18:36
@Jfinal 关键是不能在 call 中内部关闭,否则在外部调用时获取不到结果集,提示connection已经为null了,所以我写了一个close方法,是在外部调用时把ResultList获取到时才调用此方法关闭的。
public Object call(Connection conn) throws SQLException {
// TODO Auto-generated method stub
try {
conn2=DbKit.getConfig("sql2000").getConnection();
proc=conn2.prepareCall("{call new_no_NEW(?,?)}");
proc.setString(1, "保养申请单");
proc.registerOutParameter(2, java.sql.Types.VARCHAR);
proc.execute();
newNo=proc.getString(2);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
conn2.close(); // 在call 回调中关闭,外部就获取不到结集了,有什么方法,即能在此关闭,外部又能获取到这个调用存储过程的结果集。
conn2=null;
}
2019-04-21 15:48
@Jfinal callback.close() 是这个sqd_newno_Callback 回调类中定义的一个close方法,如下:
public class sqd_newno_Callback implements ICallback {
public String tecdh=null;
public String no=null;
private String newNo="";
CallableStatement proc=null;
Connection conn2;
@Override
public Object call(Connection conn) throws SQLException {
// TODO Auto-generated method stub
try {
conn2=DbKit.getConfig("sql2000").getConnection();
proc=conn2.prepareCall("{call new_no_NEW(?,?)}");
proc.setString(1, "保养申请单");
proc.registerOutParameter(2, java.sql.Types.VARCHAR);
proc.execute();
newNo=proc.getString(2);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
}
no=newNo;
return no;
}
public void close()
{
try {
proc.close();
conn2.close(); //测试发现这句注释掉就不报错
conn2=null;
System.out.println("conn close.");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}