2

生成している SQL 挿入クエリのフィールドの 1 つとして、変数の値を使用する必要があります。PHPで私はこれを行います:

if($currency = "USD")
{
 $columntoinsert = "USD_Currency";
} 
else
{
 $columntoinsert = "";
}

次に、SQL ステートメントで次のようにクエリを実行します。

$sqlinsertpayment = sqlsrv_query($connect,"INSERT INTO Payments_TBL(column1,column2,$columntoinsert,columnn)VALUES(????)",$params) or die("An error occurred trying to execute the statement");  

私はC#で同じことをしたい。使用する列を設定する次のコードがあります

var amountfield = "";
  if (save_currency != "USD")
    {
      amountcolumn = "Amount";

     }
  else
   {
      amountcolumn = "USD_Amount";
   }

しかしamountcolumn、クエリ文字列で使用しようとするInvalid column nameと予期されるエラーが発生するため、SQLクエリを実行できません。この方法で変数を使用するにはどうすればよいですか。

var sql = new sqlCommand("INSERT INTO Payments_TBL(column1,column2,myc#variablevaluehere,column3,....)Values(@value,@value,@value)",new sqlConnection(conn)); 

他の選択肢を受け入れる。すべての助けに感謝します。

4

2 に答える 2

8

の値はamountfieldコード ロジックから取得されるため、これを安全に行うことができます。

var sql = new sqlCommand(String.Format("INSERT INTO Payments_TBL(column1,column2,{0},column3,....)Values(@value,@value,@value)", amountcolumn),new sqlConnection(conn));

ただし、SQL インジェクションに対して無防備になるため、ユーザーからの文字列に対してこのようなことを行うことは絶対にしないでください。

于 2012-10-05T12:47:33.113 に答える
3

これは

var amountfield = save_currency != "USD" ? "Amount" : "USD_Amount";

var sql = new sqlCommand("INSERT INTO Payments_TBL(column1,column2," 
+  amountcolumn + 
",column3,....)Values(@value,@value,@value)",new sqlConnection(conn));

また

var sql = new sqlCommand(
                   String.Format("INSERT INTO Payments_TBL(column1,column2,  
                   {0},column3,....)Values(@value,@value,@value)", amountfield), 
                   new sqlConnection(conn));
于 2012-10-05T12:46:16.180 に答える