我写了这个查询,但它没有执行
ResultSet rs6 = stmt.executeQuery(
"UPDATE customer SET BALANCE = BALANCE + amount WHERE MOBILENUMBER = '"+phone+"' ");
rs6.next();
System.out.print("your account balance is " +rs6.getString("BALANCE"));
金额是double
它出什么问题了?
您应该executeUpdate
用于更新。其结果将返回更新的行数(不是一些任意更新的列的新值)。为了获得新的余额,您需要执行后续查询。
另外,使用准备好的语句,它们真的很好。
您只是提交了更新命令,而不是选择命令,因此您无法获得余额
UPDATE
语句(通常)不返回结果。如果你真的想更新数据,你应该executeUpdate()
改用。它将返回受更新影响的行数。
如果您确实要检索由 where 条件指定的行,则应使用SELECT
语句。这将返回一个您可以循环访问的 ResultSet。
更新查询不返回结果。您将需要在一个语句中更新并在一秒钟内选择。另外,请使用参数化查询 - 这样会更好
PreparedStatement stmt = connection.prepareStatement("UPDATE customer SET BALANCE = BALANCE + ? WHERE MOBILENUMBER = ?");
stmt.setDouble(1, amount);
stmt.setString(2, phone);
stmt.execute();
stmt.close();
stmt = connection.prepareStatement("SELECT BALANCE from customer where MOBILENUMBER = ?");
stmt.setString(1, phone);
ResultSet rs6 = stmt.execute();
rs6.next();
System.out.print("your account balance is " +rs6.getString("BALANCE"));
rs6.close();
stmt.close();