SqlException未处理C#(单元格值已更改)

时间:2013-03-26 17:17:28

标签: c# sql sqlexception unhandled-exception

我想从单元格中更改一个值(网格视图)。当我更改该值时,我得到“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列的属性为NOT NULL。 我该如何解决这个问题?

感谢您的回答。

PS ::我是C#和SQL的新手。因此,你可以明确回答。

1 个答案:

答案 0 :(得分: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 injection attacks
  • 避免数据转换问题
  • 它将您的代码(SQL)和数据(参数值)分开 - 看看上面的SQL比具有所有字符串连接的版本更容易