我写了这个查询,但它没有执行
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
它出了什么问题?
答案 0 :(得分:1)
您应该使用executeUpdate
进行更新。其结果将返回更新的行数(不是一些任意更新的列的新值)。为了获得新的余额,您需要执行后续查询。
另外,使用prepared statements,它们很好,真的。
答案 1 :(得分:0)
您刚刚提交了更新命令,而不是选择命令,因此您无法获得余额
答案 2 :(得分:0)
UPDATE
语句不会(通常)返回结果。如果您确实要更新数据,则应使用executeUpdate()
。它将返回受更新影响的行数。
如果您确实想要检索where条件指定的行,则应使用SELECT
语句。这将返回一个可以循环的ResultSet。
答案 3 :(得分:0)
更新查询不会返回结果。您需要在一个语句中更新并在一秒钟内选择。另外,请使用参数化查询 - 这样的事情会更好
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();