3

Metal_Masterその列に1 つのテーブルがOpening_Weightあり、前の値をフェッチして値を追加し、その値を再度更新して、その列の値を更新しています。

これのための私のコードは

ConnectionDB ReturnMWeight = new ConnectionDB("SELECT Opening_Weight FROM Metal_Master WHERE Metal_Name='GOLD';");
DataTable weighttd = ReturnMWeight.returntable();
GoldW = GoldW + Convert.ToDouble(weighttd.Rows[0][0].ToString());
ConnectionDB AddMWeight = new ConnectionDB("UPDATE Metal_Master SET Opening_Weight=" + GoldW + " WHERE Metal_Name='GOLD';");
AddMWeight.AddData();

しかし、単一のクエリで値を直接更新したいのですが、助けてください..

4

3 に答える 3

4

UPDATEselectステートメントを実行せずに直接実行できます。

UPDATE Metal_Master 
SET Opening_Weight = Opening_Weight + new_Value
WHERE Metal_Name='GOLD'

コードの品質を向上させるために、

  • usingオブジェクトを適切に処分するためのステートメントを使用する
  • try-catch予期しない例外を適切に処理するために使用します。
  • を防ぐためにクエリをパラメータ化しましたsql injection
于 2013-02-04T05:41:14.110 に答える
2

セットの右側で列名を使用できます。

 ConnectionDB AddMWeight = new 
 ConnectionDB("UPDATE Metal_Master SET Opening_Weight = Opening_Weight " +  10 + " WHERE Metal_Name='GOLD';");
于 2013-02-04T05:41:46.987 に答える
0

これを試して :

ConnectionDB AddMWeight = new ConnectionDB("UPDATE Metal_Master SET Opening_Weight=(SELECT SUM(Opening_Weight) AS Opening_Weight FROM Metal_master WHERE Metal_Name = 'GOLD')" + GoldW + " WHERE Metal_Name='GOLD';");
AddMWeight.AddData();
于 2013-02-04T05:41:56.487 に答える