gpt4 book ai didi

c# - 变量名 '@' 已经声明。变量名称在查询批处理或存储过程中必须是唯一的

转载 作者:太空狗 更新时间:2023-10-29 20:43:35 25 4
gpt4 key购买 nike

The variable name '@LockState' has already been declared. Variablenames must be unique within a query batch or stored procedure.

当我在下面执行此代码时,上述错误出现在我的第二个@LockState 上的 SQL 参数上。

private void btn_lock2_Click(object sender, EventArgs e)
{
rwd.command = new SqlCommand();
rwd.command.Connection = rwd.connection;

try
{
if ((txt2.Text == "")| (txt_desc2.Text == ""))
appMessages.unCompleteFields();
else
{
long from = long.Parse(this.txt2.Text);
long to = long.Parse(this.txt3.Text);
if (from <= to)
{
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;
rwd.connection.Open();
rwd.command.ExecuteScalar();
rwd.connection.Close();
}
appMessages.successfulyUpdated();
}
else
{
appMessages.unsuccessfulyUpdated();
}
this.txt1.Text = "";
this.txt2.Text = "";
}
}
catch (Exception exp) { throw exp; }
}
}

最佳答案

您在循环的每次迭代中多次添加相同的参数。

在每次循环迭代后添加 rwd.command.Parameters.Clear():

for (long counter = from; counter <= to; counter++)
{
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;

rwd.command.Parameters["@LockState"].Value =1;
rwd.command.Parameters["@card_descr"].Value = txt_desc2.Text;

rwd.connection.Open();
rwd.command.ExecuteScalar();
rwd.connection.Close();
}

关于c# - 变量名 '@' 已经声明。变量名称在查询批处理或存储过程中必须是唯一的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19535486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com