Java 代码使用MySQL建立一个名为bank的数据库,在bank数据库中创建card1和card2 表,card1和card2表的字段如下(两者相同): number(char),name(char), amount(float),其中number字段为主键。 程序进行两个操作,一是将card1表中某记录的amount字段的值减去100,二 是将card2表中某记录的amount字段的值增加100,必须保证这两个操作要么 成功,要么失败。
时间: 2024-02-10 09:14:41 浏览: 100
好的,以下是Java代码示例:
```java
import java.sql.*;
public class BankDatabase {
// 数据库连接信息
private static final String DB_URL = "jdbc:mysql://localhost:3306/bank";
private static final String USER = "root";
private static final String PASS = "password";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// 打开连接
conn = DriverManager.getConnection(DB_URL, USER, PASS);
conn.setAutoCommit(false); // 设置手动提交事务
// 更新card1表
stmt = conn.createStatement();
String sql1 = "UPDATE card1 SET amount = amount - 100 WHERE number = 'xxxx'";
stmt.executeUpdate(sql1);
// 更新card2表
String sql2 = "UPDATE card2 SET amount = amount + 100 WHERE number = 'yyyy'";
stmt.executeUpdate(sql2);
// 提交事务
conn.commit();
System.out.println("Transaction succeeded!");
} catch (SQLException e) {
// 回滚事务
try {
if (conn != null) {
conn.rollback();
System.out.println("Transaction rolled back!");
}
} catch (SQLException ex) {
ex.printStackTrace();
}
e.printStackTrace();
} finally {
// 关闭连接和语句
try {
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}
```
其中,xxxx和yyyy需要替换为实际的卡号。这段代码使用Java的JDBC API连接MySQL数据库,并通过SQL语句更新表中的记录。由于涉及到两个表的更新,需要使用事务来保证操作的原子性和一致性。如果两个更新操作都成功,则提交事务;否则回滚事务。
阅读全文