用Java和mysql写一段代码
时间: 2024-01-30 07:01:52 浏览: 86
java连接mysql数据库代码示范
5星 · 资源好评率100%
以下是一个基于 Java 和 MySQL 的简单转账代码示例:
```
import java.sql.*;
public class TransferMoney {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement stmtOut = null;
PreparedStatement stmtIn = null;
ResultSet rsOut = null;
ResultSet rsIn = null;
try {
// 1. 加载 MySQL 驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 2. 建立数据库连接
String url = "jdbc:mysql://localhost:3306/mydb";
String user = "root";
String password = "123456";
conn = DriverManager.getConnection(url, user, password);
// 3. 开启事务
conn.setAutoCommit(false);
// 4. 查询转出账户余额
String sqlOut = "SELECT balance FROM account WHERE account_no=?";
stmtOut = conn.prepareStatement(sqlOut);
stmtOut.setString(1, "123456");
rsOut = stmtOut.executeQuery();
if (rsOut.next()) {
double balanceOut = rsOut.getDouble("balance");
if (balanceOut < 100) {
throw new RuntimeException("余额不足");
}
// 5. 更新转出账户余额
double newBalanceOut = balanceOut - 100;
String sqlUpdateOut = "UPDATE account SET balance=? WHERE account_no=?";
stmtOut = conn.prepareStatement(sqlUpdateOut);
stmtOut.setDouble(1, newBalanceOut);
stmtOut.setString(2, "123456");
stmtOut.executeUpdate();
// 6. 查询转入账户余额
String sqlIn = "SELECT balance FROM account WHERE account_no=?";
stmtIn = conn.prepareStatement(sqlIn);
stmtIn.setString(1, "654321");
rsIn = stmtIn.executeQuery();
if (rsIn.next()) {
double balanceIn = rsIn.getDouble("balance");
// 7. 更新转入账户余额
double newBalanceIn = balanceIn + 100;
String sqlUpdateIn = "UPDATE account SET balance=? WHERE account_no=?";
stmtIn = conn.prepareStatement(sqlUpdateIn);
stmtIn.setDouble(1, newBalanceIn);
stmtIn.setString(2, "654321");
stmtIn.executeUpdate();
} else {
throw new RuntimeException("转入账户不存在");
}
} else {
throw new RuntimeException("转出账户不存在");
}
// 8. 提交事务
conn.commit();
System.out.println("转账成功");
} catch (Exception e) {
// 9. 回滚事务
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
System.out.println("转账失败:" + e.getMessage());
} finally {
// 10. 释放资源
try {
rsOut.close();
stmtOut.close();
rsIn.close();
stmtIn.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
此代码中,我们使用了 JDBC API 来连接和操作 MySQL 数据库。其中,主要包括以下步骤:
1. 加载 MySQL 驱动程序;
2. 建立数据库连接;
3. 开启事务;
4. 查询转出账户余额;
5. 更新转出账户余额;
6. 查询转入账户余额;
7. 更新转入账户余额;
8. 提交事务;
9. 回滚事务;
10. 释放资源。
需要注意的是,我们在第 3 步开启了事务,并在第 8 步提交了事务,同时在第 9 步中回滚了事务,以保证所有操作的原子性。
阅读全文