0

我想从单元格中更改一个值(网格视图)。当我更改值时,我得到“SqlException was unhandled In correct syntax near '='”错误。我调试了我在单元格中输入 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 列的属性不是 NULL。我该如何解决这个问题?

感谢您的回答。

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 回答