zoukankan      html  css  js  c++  java
  • java通过jdbc访问mysql,update数据返回值的思考

    java通过jdbc访问mysql,update数据返回值的思考

    先不说那么多,把Java代码贴出来吧。

    复制代码
    public static void main(String[] args) throws InterruptedException, IOException {
        try {
    
            DriverManagerDataSource dataSource = new DriverManagerDataSource();
            dataSource.setDriverClassName("com.mysql.jdbc.Driver");
            dataSource.setUrl("jdbc:mysql://172.23.88.107:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC");
            dataSource.setUsername("root");
            dataSource.setPassword("zdsoft");
    
            JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
    
            int res= jdbcTemplate.update("update student set name='李四',age=12 where id=25");
            System.out.println(res);
    
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
        
    }
    复制代码

    我们知道。在mysql中,如果我们修改一条数据的原始值和修改后值是一致的,那么就会返回影响的行数为0

    很好,那么执行上面java的代码,理论上就会返回0。但是经过多次执行、多次测试,返回的始终是1。这就让人很不解了,后来翻看了相关资料,原来jdbc默认返回的是匹配的行数(而不是影响的行数)。因此如果我们想要返回影响的行数,可以在url连接地址里面加上useAffectedRows=true就可以了。

    url:jdbc:mysql://172.23.88.107:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useAffectedRows=true

    ps:其实sqlserver和Oracle就没有匹配的行数和影响的行数的说法,返回的都是影响的行数,而影响的行数和mysql的匹配行数的值是一致的。所以为了保证三种数据库的一致性,一般还是不建议加useAffectedRows=true

  • 相关阅读:
    银行家算法实例(转)
    DNS中的七大资源记录介绍!(转)
    android之存储篇_SQLite数据库_让你彻底学会SQLite的使用(转)
    回顾HTML5的语义化元素
    vueJs2.0学习笔记(六)
    vueJs2.0学习笔记(五)
    vueJs的学习笔记(四)
    vueJs2.0学习笔记(三)
    vueJs的学习笔记(二)
    vueJs 2.0学习笔记(一)
  • 原文地址:https://www.cnblogs.com/hfultrastrong/p/10483462.html
Copyright © 2011-2022 走看看