JDBC—更新
一.执行更新语句
JDBC执行更新的步骤更执行查询一样,首先需要创建连接和获取Statement实例,但是更新时调用的是executeUpdate,而不是executeQuery,执行完后会返回受影响的记录行数,代码如下:
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
String url = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";
connection = DriverManager.getConnection(url, "root", "123456");
statement = connection.createStatement();
String sql = "update user set name='test002' where id=123";
int rowCount = statement.executeUpdate(sql);
System.out.println("受影响的总记录数:" + rowCount);
} catch (Throwable t) {
t.printStackTrace();
} finally {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
}
}
二.批量更新
批量更新是将一组更新操作组合在一起,而不是逐个发送更新。一次性向数据库发送一批更新比一个接一个地发送效率更高。
Statement statement = null;
try{
statement = connection.createStatement();
statement.addBatch("update user set name='test001' where id=001");
statement.addBatch("update user set name='test002' where id=002");
statement.addBatch("update user set name='test003' where id=003");
int[] recordsAffected = statement.executeBatch();
} finally {
if(statement != null) statement.close();
}
三.事务
事务是一组要作为单个原子操作执行的操作。要么执行所有操作,要么都不执行任何操作。在JDBC中,我们可以通过以下操作启动事务,提交和回滚:
启动事务:
connection.setAutoCommit(false);
提交事务:
connection.commit();
事务回滚:
connection.rollback();