Java如何知道更新数据库表中的数据时受影响的行数?

在本例中,您可以看到在更新数据库中的记录时,如何获得受影响的行数或记录数。Statement 或 PreparedStatement 的 executeUpdate ()方法返回一个整数值,它告诉我们有多少记录受到执行命令的影响。

注意,当 executeUpdate ()方法的返回值为0时,它可能意味着以下两种情况之一: (1)执行的语句是影响零行的 update 语句,或者(2)执行的语句是 DDL 语句,比如在数据库中创建表的语句。

package org.nhooo.example.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class HowManyRowExample {
    private static final String URL = "jdbc:mysql://localhost/nhooo";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "";

    public static void main(String[] args) throws Exception {
        try (Connection connection =
                 DriverManager.getConnection(URL, USERNAME, PASSWORD)) {

            String sql = "UPDATE books " +
                "SET title = ?, published_year = ? " +
                "WHERE isbn = ?";

            PreparedStatement ps = connection.prepareStatement(sql);
            ps.setString(1, "Java 8 in Action, First Edition");
            ps.setInt(2, 2014);
            ps.setString(3, "9781617291999");
            int rows = ps.executeUpdate();

            System.out.printf("%d row(s) updated!", rows);
        }
    }
}

上面的代码片段的结果:

1 row(s) updated!

Maven依赖

<!-- https://search.maven.org/remotecontent?filepath=mysql/mysql-connector-java/5.1.47/mysql-connector-java-5.1.47.jar -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>