-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

UPDATEステートメントは(通常)結果を返しません。本当にデータを更新したい場合は、executeUpdate()代わりに使用する必要があります。更新の影響を受ける行数を返します。

where条件で指定された行を実際に取得する場合は、SELECTステートメントを使用する必要があります。これにより、ループできるResultSetが返されます。

于 2012-04-30T10:29:28.327 に答える
0

更新クエリは結果を返しません。1つのステートメントで更新し、2番目に選択する必要があります。また、パラメータ化されたクエリを使用してください-このようなものの方が良いでしょう

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 に答える
0

selectコマンドではなくupdateコマンドをコミットしたばかりなので、バランスをとることができません

于 2012-04-30T10:28:13.450 に答える