首页 > 数据库 > mysql教程 > 如何修复 SQL 查询批处理中的'变量名 '@' 已声明”错误?

如何修复 SQL 查询批处理中的'变量名 '@' 已声明”错误?

Susan Sarandon
发布: 2025-01-01 08:24:11
原创
716 人浏览过

How to Fix

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板