MySQL驱动对MYSQL进行update操作时返回值注意UseAffectedRows

数据库upate更新表时经常要用,update的结果进行一些逻辑判断,如返回值大于1表示更新成功,为0表示更新失败。

但是使用Mysql驱动连接数据库并进行update操作时,返回值可能不在预期。

update iwrs_drug_order set  status=2 where orderno=?

这个sql无论执行多少遍,update返回值都可能是1。原因在于MySQL的连接URL。

最简单的MySQL连接URL:

jdbc:mysql://127.0.0.1:3306/crct?characterEncoding=utf-8
这样写执行简单的操作没有异常抛出,但是当执行update的时候,以上update语句时返回值一直会大于0。

原因是执行update默认返回的是where条件match的条件数,在SQL1中,由于where条件为id=?,无论更新多少次,where条件总能match一条数据,所以update返回值一直等于1.

解决这个问题方法:

对mysqlURL进行修改,添加参数useAffectedRows=true。

jdbc:mysql://127.0.0.1:3306/crct?characterEncoding=utf-8&useAffectedRows=true

说明:useAffectedRows的作用在于是否用受影响的行数替代查找到的行数来返回数据,默认 false。指定这个值后,更新时会返回更新的行数,按照SQL1执行update操作也会返回正常值,即第一次返回1,第二次返回0.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值