尝试执行SQL代码时,可能会遇到错误“变量名'@” LockState' 已声明。变量名称在查询批处理或存储过程中必须是唯一的。”出现此问题的原因是循环中包含同一参数的多个实例。
要解决此错误,您可以在每次循环迭代后清除参数或在循环之前添加参数。
for (long counter = from; counter <= to; counter++) { // Clear parameters before adding new ones rwd.command.Parameters.Clear(); string upd = "update card set LockState=@lockstate, card_descr=@card_descr where [cardNumber] = N'{0}'"; rwd.command.CommandText = upd; rwd.command.Parameters.Add(new SqlParameter("@LockState", SqlDbType.NVarChar)).Value = 1; rwd.command.Parameters.Add(new SqlParameter("@card_descr", SqlDbType.NVarChar)).Value = txt_desc2.Text; rwd.connection.Open(); rwd.command.ExecuteScalar(); rwd.connection.Close(); }
rwd.command.Parameters.Add(new SqlParameter("@LockState", SqlDbType.NVarChar)); rwd.command.Parameters.Add(new SqlParameter("@card_descr", SqlDbType.NVarChar)); for (long counter = from; counter <= to; counter++) { string upd = "update card set LockState=@lockstate, card_descr=@card_descr where [cardNumber] = N'{0}'"; rwd.command.CommandText = upd; // Assign values to parameters within the loop rwd.command.Parameters["@LockState"].Value = 1; rwd.command.Parameters["@card_descr"].Value = txt_desc2.Text; rwd.connection.Open(); rwd.command.ExecuteScalar(); rwd.connection.Close(); }
通过实施这两种方案,您可以有效解决参数冗余问题,保证SQL代码的成功执行。
以上是如何解决'变量名'@'已声明”SQL 错误?的详细内容。更多信息请关注PHP中文网其他相关文章!