更新命令错误

本文关键字:错误 命令 更新 | 更新日期: 2023-09-27 18:18:24

我想通过代码更新表单中的一行。也许有些列是空的。所以while命令是执行时,将在关键字'where'附近出现错误并提示语法错误:

SqlCommand Update = new SqlCommand("Update Table_065_Turn SET Column02=" + Row["Column48"] + "  , Column15= " + Row["Column15"].ToString()  +
" where ColumnId=" + StatusTable.Rows[0]["ColumnId"], Con);
 Update.ExecuteNonQuery();

我知道这个错误将被显示,因为Row["Column15"]是空的。我如何检查如果列在datarow是空的;当然,在Update命令之前没有任何额外的变量或命令。我的意思是在update命令中检查列

更新命令错误

我建议使用SqlParameters,而且SqlCommand实现了IDisposable,所以您应该将其封装在using语句中,例如

using (SqlCommand update = new SqlCommand("Update Table_065_Turn SET Column02=@Col2, Column15=@Col15 where ColumnId=@ColId", con))
{
    update.Parameters.AddWithValue("@Col2", Row["Column48"]);
    update.Parameters.AddWithValue("@Col15", Row["Column15"]);
    update.Parameters.AddWithValue("@ColId", StatusTable.Rows[0]["ColumnId"]);
    update.ExecuteNonQuery();
}

此外,在执行查询之前,您可能更好地验证字段,除非null是有效的列值。

我怀疑你必须用数据库关键字NULL"替换".net nullstring sql = "Column15 = " + (row[15] == null ? "NULL" : row[15].ToString())在你的情况下,但更好的方法是使用James写的参数,也要记住有人可能会为你的查询提供有害的字符串:

row[15] = ";DROP DATABASE; --"将足以在您的情况下,导致您的所有数据丢失;)(见"SQL注入"在您最喜欢的搜索引擎

你可以使用

var value = "" + Row["columnname"] ; 

所以,你不需要检查对象是否为空

它是安全的…

你可以这样做:

string filterString;
if (StatusTable.Rows[0]["ColumnId"]!=System.DBNull.Value)
  filterString= @" WHERE ColumnID= StatusTable.Rows[0]["ColumnId"]";//I assume the value returned is a string
else
  filterString="";

然后你可以把filterString变量附加到SQLCommand字符串