编写SQL查询

时间:2012-04-30 10:23:45

标签: java sql netbeans

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

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 个答案:

答案 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();