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>