0

セルから値を変更したい(グリッドビュー)。値を変更すると、「SqlExceptionは'='の近くの正しい構文で処理されませんでした」というエラーが発生します。セルに50を入力したコードをデバッグしました。

  e.value= 50 , 

  dt.Rows[e.RowHandle]["Operator_ID"] = null   
 private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
 {
        DataTable dt = gridControl1.DataSource as DataTable;
        SqlProcess process = new SqlProcess();
        process.updateQuery(@"UPDATE IE_OPERATOR_GID_KTS_PER SET CarpanDegeri ='" + e.Value +
                           "' WHERE IE_OPERATOR_GTD_KTS_PER.Operator_ID= " + dt.Rows[e.RowHandle]["Operator_ID"]);
}

テーブルでは、Operator_ID列のプロパティはNOTNULLです。この問題を解決するにはどうすればよいですか?

回答ありがとうございます。

PS ::私はC#とSQLの方が新しいので、明示的に答えることができます。

4

1 に答える 1

4

これは、パラメータを使用するのではなく、手動で追加された値を使用してSQLを構築しているためです。SQLを次のように変更します。

UPDATE IE_OPERATOR_GID_KTS_PER SET CarpanDegeri = @CarpanDegeri
WHERE IE_OPERATOR_GTD_KTS_PER.Operator_ID = @OperatorID

...次に、それらのパラメーターの値を指定します。何SqlProcessであるかは私にはわかりませんが、パラメータ化されたクエリをサポートしていない場合は、根本的に壊れています:(

SqlCommand.Parametersパラメータの使用方法の例については、ドキュメントを参照してください。値に対しては常にこれを行う必要があります。

  • SQLインジェクション攻撃を回避します
  • データ変換の問題を回避します
  • コード(SQL)とデータ(パラメーター値)を分離します-すべての文字列を連結したバージョンよりも、上記のSQLを読むのがどれほど簡単かを見てください
于 2013-03-26T17:19:56.433 に答える