【发布时间】:2012-12-21 14:20:40
【问题描述】:
可能重复:
The variable name ‘@VarName’ has already been declared Issue
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;
}
}
}
我正在尝试在配置表中写入,首先读取 id 并增加它,然后再写入其他所有内容。但是当添加第二个条目时,它会给出异常
变量名“@id”已被声明。变量名 在查询批处理或存储过程中必须是唯一的。
如何避免这个异常?
【问题讨论】:
-
我有 84% 的把握,一旦你设置了一次
CommandText,你就不需要再设置一次了;您可以继续重复使用具有不同参数的语句。您可能希望有两个语句并将它们设置在循环之外,以确保它们不会每次都重新编译。这不是什么大不了的事,但您不妨利用准备好的语句的好处... :)