-2

我写了这个查询,但它没有执行

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

它出什么问题了?

4

4 回答 4

1

您应该executeUpdate用于更新。其结果将返回更新的行数(不是一些任意更新的列的新值)。为了获得新的余额,您需要执行后续查询。

另外,使用准备好的语句,它们真的很好。

于 2012-04-30T10:28:11.643 回答
0

您只是提交了更新命令,而不是选择命令,因此您无法获得余额

于 2012-04-30T10:28:13.450 回答
0

UPDATE语句(通常)不返回结果。如果你真的想更新数据,你应该executeUpdate()改用。它将返回受更新影响的行数。

如果您确实要检索由 where 条件指定的行,则应使用SELECT语句。这将返回一个您可以循环访问的 ResultSet。

于 2012-04-30T10:29:28.327 回答
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();
于 2012-04-30T10:33:27.710 回答