陕西省住房和城乡建设厅网站首页,布吉网站建设哪家便宜,京东购物中心,广西网站建设价格多少数据库upate更新表时经常要用#xff0c;update的结果进行一些逻辑判断#xff0c;如返回值大于1表示更新成功#xff0c;为0表示更新失败。
但是使用Mysql驱动连接数据库并进行update操作时#xff0c;返回值可能不在预期。
update iwrs_drug_order set status2 where …数据库upate更新表时经常要用update的结果进行一些逻辑判断如返回值大于1表示更新成功为0表示更新失败。
但是使用Mysql驱动连接数据库并进行update操作时返回值可能不在预期。
update iwrs_drug_order set status2 where orderno?
这个sql无论执行多少遍update返回值都可能是1。原因在于MySQL的连接URL。
最简单的MySQL连接URL
jdbc:mysql://127.0.0.1:3306/crct?characterEncodingutf-8 这样写执行简单的操作没有异常抛出但是当执行update的时候以上update语句时返回值一直会大于0。
原因是执行update默认返回的是where条件match的条件数在SQL1中由于where条件为id?无论更新多少次where条件总能match一条数据所以update返回值一直等于1.
解决这个问题方法
对mysqlURL进行修改添加参数useAffectedRowstrue。
jdbc:mysql://127.0.0.1:3306/crct?characterEncodingutf-8useAffectedRowstrue
说明useAffectedRows的作用在于是否用受影响的行数替代查找到的行数来返回数据默认 false。指定这个值后更新时会返回更新的行数按照SQL1执行update操作也会返回正常值即第一次返回1第二次返回0.