SQL 查询批处理中的变量名称冲突
执行 SQL 查询时,确保批处理或存储过程中变量名称的唯一性至关重要。错误“变量名‘@’已被声明”表示定义了多个同名变量。
要解决此问题,请关注提供的代码块:
private void btn_lock2_Click(object sender, EventArgs e) { // ... 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; 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; // ... } }
错误在于循环内重复添加参数。相反,请将参数创建移到循环之外:
// Moved outside the loop 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++) { // ... rwd.command.Parameters["@LockState"].Value = 1; rwd.command.Parameters["@card_descr"].Value = txt_desc2.Text; // ... }
或者,考虑清除循环内的参数:
for (long counter = from; counter <= to; counter++) { rwd.command.Parameters.Clear(); // ... }
通过遵循这些建议,您可以消除错误并确保SQL 查询中变量名称的唯一性。
以上是如何修复 SQL 查询批处理中的'变量名 '@' 已声明”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!