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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM