用java调用存储过程后数据库里可以查到记录,但是execute返回的确实false而且返回值的都是-1?

 我来答
愿者上钩a5
2016-05-19 · TA获得超过319个赞
知道小有建树答主
回答量:537
采纳率:50%
帮助的人:162万
展开全部
你是没有弄清楚它的方法说明,就像上一楼说的,你没有弄清楚API
如果你要判断是否新增或作插入等操作是否成功,execute之后,你应该再调用
int tmp=cs.getUpdateCount()的方法(方法名应该没记错,就是返回你cs上一次操作时候改变的记录的数目),之后再return tmp>0即可
追问
getUpdateCount返回的是-1
getResultSet是null
但是数据库里已经有执行这个存储过程的记录了
乡愁廖
2019-07-12
知道答主
回答量:9
采纳率:0%
帮助的人:7085
展开全部
在调用 prepareCall方法 调用语句最前面加 SET NOCOUNT ON
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
枸杞和红豆
2016-05-19
知道答主
回答量:1
采纳率:0%
帮助的人:1.9万
展开全部
你这样的操作是不是数据已经添加成功了,但是excute却是false,那么我想知道的是excute却是false,会给你的程序带来什么问题?
更多追问追答
追问
执行成功后,怎么会返回false呢?
追答
有两个部分你需要修改:
1.存储过程需要定义一个返回参数:
create procedure sp_saveColumnturn(@args1 varchar(2000),@result int out )
2.java在调用存储过程中需要返回值时需要注册返回值类型:registerOutParameter

CallableStatement cstmt = conn.prepareCall("{ call sp_saveColumnturn(?,?) }");
cstmt.setString(1, "arg1");
cstmt.registerOutParameter(2,Types.INTEGER);
cstmt.execute();
int result = cstmt.getInt(2);
System.out.println(result);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式