zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    21.Merge Two Sorted Lists 、23. Merge k Sorted Lists
    34. Find First and Last Position of Element in Sorted Array
    leetcode 20. Valid Parentheses 、32. Longest Valid Parentheses 、301. Remove Invalid Parentheses
    31. Next Permutation
    17. Letter Combinations of a Phone Number
    android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配注意事项
    oc 异常处理
    oc 类型判断
    oc Delegate
    oc 协议
  • 原文地址:https://www.cnblogs.com/duanjt/p/9530570.html
Copyright © 2011-2022 走看看