java代码 配合oralce for update使用示例
时间: 2024-09-24 17:20:03 浏览: 35
Java使用JDBC连接Oracle_MSSQL实例代码
在Java中,配合Oracle数据库的`FOR UPDATE`语句用于行级锁定,通常用于并发控制场景下,比如你想在更新数据之前确保其他线程不会修改同一行数据。下面是一个简单的示例:
```java
import java.sql.Connection;
import java.sql.PreparedStatement;
public class OracleUpdateExample {
private static final String DB_URL = "jdbc:oracle:thin:@localhost:port/service_name";
private static final String USER = "username";
private static final String PASS = "password";
public static void main(String[] args) {
try (Connection connection = DriverManager.getConnection(DB_URL, USER, PASS);
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM table_name WHERE id = ? FOR UPDATE")) {
// 设置预处理语句的参数
preparedStatement.setInt(1, 1); // 更新id为1的记录
// 执行查询并获取连接到指定行的Statement实例
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
// 现在对找到的行进行更新操作
String updatedValue = "new_value";
String sqlUpdate = "UPDATE table_name SET column_name = ? WHERE id = ?";
preparedStatement.setString(1, updatedValue);
preparedStatement.setInt(2, 1);
int rowsAffected = preparedStatement.executeUpdate();
System.out.println("Rows affected: " + rowsAffected);
// 如果更新成功,可以继续使用该行,如果失败则说明已被其他事务锁住
// ...
} else {
System.out.println("No row found with that ID");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
在这个例子中,我们首先获取到表中id为1的数据行,并将其锁定。然后尝试更新该行的数据,如果更新成功,说明没有其他事务正在修改这个行。如果返回的受影响行数为0,可能是因为其他事务已经更改了数据。
阅读全文