【问题标题】:Java SQL - How to use a field attribute as a variableJava SQL - 如何将字段属性用作变量
【发布时间】: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


【解决方案1】:
try {
  String Balance = null;
  ResultSet rs = stm.executeQuery("SELECT balance FROM ACCOUNTINFO WHERE ...CONDITIONS...");
  if (rs.next()){
    Balance = rs.getString(1);
  }
  if (amount < Long.valueOf(Balance).longValue()){
    ResultSet res = null;
    res = stm.executeUpdate("UPDATE AccountInfo SET Balance = Balance -" + amount);
  }
}
catch (SQLException sql) {
  System.out.println(sql);
}
catch (Exception ex) {
  System.out.println(ex);
} 

您必须将条件添加到选择查询中。

【讨论】:

    猜你喜欢
    • 2021-10-23
    • 2012-07-20
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多