iBatis调用mssql2000存储过程无法更新数据库?

winyoung 2007-01-22 01:18:14
在Dao中的方法如下:
public static String getBillnum(Integer serid) throws SQLException{
SqlMapClient sqlMap=Ibatissqlmap.getSqlMapInstance();
HashMap mapparam=new HashMap();
String out_billnum = "0";
mapparam.put("In_serid",serid);//存储过程输入参数
mapparam.put("Out_billnum",out_billnum);//存储过程输出参数
try{
sqlMap.startTransaction();
sqlMap.queryForObject("Serno.getBillnum",mapparam);
sqlMap.commitTransaction();
}catch(Exception e ){
e.printStackTrace();
}
finally{
sqlMap.endTransaction();
}
out_billnum=mapparam.get("Out_billnum").toString();
System.out.println("============================");
System.out.println("billnumber="+out_billnum);
System.out.println("============================");
return out_billnum;
}
这里涉及一个serno表,该方法的目的是取出一个流水号,而表serno中则保存着当前序号,每次生成该流水号时,都是先加1再取出,具体实现过程写在存储过程中,存储过程中使用了mssql自己的事务控制.如果在mssql的查询分析器手动执行能够成功,且序号也加1了.但用Dao中的该方法执行时,语句System.out.println("billnumber="+out_billnum);能够打印出正确的序号,但数据库却无法更新,以至第次取出都是同样的值.通过SQL事件探查器找到执行语句,然后拷贝到SQL查询分析中执行,却能成功.不知有没有大虾能够解决?50分感谢!!!
...全文
284 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yesjoy 2007-04-20
  • 打赏
  • 举报
回复
mapparam.put("In_serid",serid);//存储过程输入参数
看看是否跟你输入参数的类型有关系呢?
存储过程中定义的输入参数类型和java中类型有对应的关系的,你可以在网上搜索一下
记得好像用BigInt
winyoung 2007-01-22
  • 打赏
  • 举报
回复
使用iBatis的很少吗?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧