可能重复: 变量名“@VarName”已被声明为
using (SqlCommand command = connection.CreateCommand())
{
int j = 1;
for (int i = 0; i < temp4.Count; i++)
{
#region idsetter
int prevId = 0;
command.CommandText = "SELECT MAX(id) FROM Configuration";
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
if (reader[0].ToString() != "")
{
prevId = Int32.Parse(reader[0].ToString());
}
else
{
prevId = 0;
}
}
}
connection.Close();
int currId = prevId + 1;
#endregion
command.CommandText = "INSERT INTO Configuration (id,A, B, C, D, E, F,G) " +
"VALUES (@id, @a, @b , @c, @d, @e, @f, @g)";
command.Parameters.AddWithValue("@id", currId);
command.Parameters.AddWithValue("@a", myL);
command.Parameters.AddWithValue("@b", pipi);
command.Parameters.AddWithValue("@c", temp4[i].ad);
command.Parameters.AddWithValue("@d", temp4[i].asa);
command.Parameters.AddWithValue("@e", temp4[i].Tasa);
command.Parameters.AddWithValue("@f", j);
command.Parameters.AddWithValue("@g", 1);
connection.Open();
command.ExecuteNonQuery();
connection.Close();
j++;
if (j > 7)
{
j = 1;
}
}
}我正在尝试在Configuration中写入,首先读取id并增加它,然后编写其他所有内容。但是,当添加第二个条目时,就会出现异常。
变量名"@id“已经声明。变量名在查询批处理或存储过程中必须是唯一的。
如何避免这一异常的任何工作?
发布于 2012-12-21 14:23:22
您需要在循环的每一次迭代中清除命令参数。
command.CommandText = "INSERT INTO Configuration (id,A, B, C, D, E, F,G) VALUES (@id, @a, @b , @c, @d, @e, @f, @g)";
command.Parameters.Clear();
command.Parameters.AddWithValue("@id", currId);发布于 2012-12-21 14:32:36
如果每次添加相同的参数,则总是会出现异常。
在循环之前声明变量,并给出一些默认值,如下所示:
command.Parameters.AddWithValue("@id", 1);
command.Parameters.AddWithValue("@a", "");
command.Parameters.AddWithValue("@b", "");
command.Parameters.AddWithValue("@c", "");
command.Parameters.AddWithValue("@d", "");
command.Parameters.AddWithValue("@e", "");
command.Parameters.AddWithValue("@f", 1);
command.Parameters.AddWithValue("@g", 1);然后在command.CommandText = "INSERT INTO Configuration (id,A, B, C, D, E, F,G) VALUES (@id, @a, @b , @c, @d, @e, @f, @g)";之后更改参数的值
cmd.Parameters["@id"].Value=currId;
cmd.Parameters["@a"].Value=myL;
cmd.Parameters["@b"].Value=pipi;
cmd.Parameters["@c"].Value=temp4[i].ad;
cmd.Parameters["@d"].Value=temp4[i].asa;
cmd.Parameters["@e"].Value=temp4[i].Tasa;
cmd.Parameters["@f"].Value=j;
cmd.Parameters["@g"].Value=1;发布于 2012-12-21 14:22:09
现在,来自第一个查询的参数与来自第二个查询的参数是冲突的。每次执行时都使用一个新命令。
https://stackoverflow.com/questions/13991806
复制相似问题