2016-11-23 13 views
0

クエリ文字列で操作を行う方法w_balance = w_balance + amount? 1つの方法は、クエリ文字列の外で操作を実行することです。しかし、それを直接行う方法はありますか?ここで、amountは、w_balanceから追加または削除したい新しい量です。プログラムでクエリの操作を実行する方法は?

私のデータベースはPostgresql。

String SQL = "update walletapp.users_acc set w_balance = w_balance + amount where kyc_id = :sender_id"; 

私は - 私の問題を解決した - String SQL = "update walletapp.users_acc set w_balance = w_balance + :amount where kyc_id = :sender_id";を使用しました。ここ

+0

変数の割り当てを実行しようとしましたか?あなたができるから。 – AxelH

+1

sender_idパラメータを渡すのと同じ方法でパラメータとして渡します: 'set w_balance = w_balance +:amount' –

+0

postgresqlコンテキストの外側にある' w_balance'の割り当てについて質問するように質問を更新します。尋ねた私が理解していることから、文字列の作成中に変数を代入しようとしているだけです。 SQLは、可能な答えをつぶすだけです。 – AxelH

答えて

0

@a_horse_with_no_name set w_balance = w_balance + :amountによって示されているように私のために働きました。

0

値の逢引それの使用の簡単な例である:

int i = 0; 
System.out.println(i = 5); 
String s = "The Value is " + (i = 4); 
System.out.println(s); 
System.out.println(i); 

この意志出力

値が4

あります4

変数を設定して同時に回復することができることがわかります。これはオペレータの優先度の一部です。

-2

変数にアースするか直接行います。それを行うための良い方法は、String.Formatのを使用している:

String SQL = String.format("update walletapp.users_acc set w_balance = %d where kyc_id = :sender_id", w_balance + amount); 
+0

文字列の置換は行わないでください。あなたはSQLインジェクションへの扉を開きます。変数を使用します。 –

+0

それはあなたが不注意な人で、それに応答パラメータ値を入れた場合に起こります。それ以外の場合は起こりません。 – Eduardo

+2

セキュリティのために文字列の置換が悪いだけでなく、準備された文から利益を得ることができないため、パフォーマンスに悪いこともあります。 – Brian

関連する問題