【发布时间】:2016-05-07 20:39:17
【问题描述】:
我有一个 ACCOUNTINFO 表,我试图将“余额”字段属性用作变量,以将其与另一个变量“金额”进行比较。通过这样做,我将能够从余额中减去金额,然后显示剩余余额,但是,我无法让它工作,有人可以帮我吗?
我的代码如下:
boolean flag = false;
try {
String Balance = null;
ResultSet rs = null;
if (rs.next()){
Balance = rs.getString(1);
}
if (amount < Long.valueOf(Balance).longValue()){
ResultSet res = null;
res = stm.executeQuery("UPDATE AccountInfo SET Balance = Balance -"+ amount);
}
}
catch (SQLException sql) {
System.out.println(sql);
}
return flag;
}
try {
String Balance = null;
ResultSet rs = null;
if (rs.next()){
Balance = rs.getString(1);
}
if (amount < Long.valueOf(Balance).longValue()){
ResultSet res = null;
res = stm.executeQuery("UPDATE AccountInfo SET Balance = Balance -"+ amount);
}
【问题讨论】:
-
我在
if (rs.next()) {(第 6 行)看到 NullPointerException,我错了吗?在那个位置 rs 只能为空 -
@mauros 对不起,Mauros 你是什么意思?
-
我的意思是,如果您将
rs设置为null,并且在下一行中您在运行时调用rs.next(),您应该有一个NullPointerException,因为rs是null。而且由于您只捕获 SQLException ,因此您可能无法捕获该异常并且不会记录它。但我不是 JVM,所以我可能错了。 -
看看这个页面link在这里你可以看到这个'ResultSet rs = stmt.executeQuery(query);'这就是你没有做的事情,你没有执行查询来获取余额。
-
成功了吗?我认为您应该更改的另一件事是
res = stm.executeQuery("UPDATE AccountInfo SET Balance = Balance -"+ amount);我认为这不起作用,因为 executeQuery 方法仅用于查询。使用res = stm.executeUpdate("UPDATE AccountInfo SET Balance = Balance -"+ amount);而不是Statement
标签: java sql sql-update derby