【发布时间】:2021-11-09 03:45:57
【问题描述】:
我正在使用这两种方法来更新我正在编写的银行应用程序的余额,但数据库拒绝更新,我不知道为什么。
获取添加多少的函数:
public void addIncome(String cardNum,Scanner scanner){
System.out.println("Enter income: ");
int income = scanner.nextInt();
scanner.nextLine();
dataBase.addBalance(income,cardNum);
}
为查询准备的语句和函数:
private final String ADD_BALANCE = ("UPDATE card SET balance=balance+? WHERE number=?");
public void addBalance(int amount, String number){
try (Connection con = this.dataSource.getConnection();
final var sql = con.prepareStatement(ADD_BALANCE)){
sql.setInt(1, amount);
sql.setString(2,number);
sql.executeUpdate();
}catch (SQLException throwables) {
throwables.printStackTrace();
}
}
【问题讨论】:
-
如果
getConnection返回一个面向事务的连接,那么你需要在更新后提交。但是如果启用了自动提交,那么问题就出在其他地方。这样做:(a)离开try前检查余额,然后从addBalance返回后再次检查余额,然后你就会知道了。
标签: java sqlite jdbc sql-update