我有这个,并在另一个使 int id 变量成为变量的插入上创建了范围标识
foreach (ListItem item in CheckBoxList1.Items)
{
if (item.Selected)
{
int CheckId = Convert.ToInt32(item.Value);
cmd.CommandText = "INSERT INTO FarveTilCykel (fk_cy_id, fk_farve_id) VALUES (@cy, @farve)";
cmd.Parameters.Add("@cy", SqlDbType.VarChar).Value = id;
cmd.Parameters.Add("@farve", SqlDbType.VarChar).Value = CheckId;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
} //end if
} //end foreach
问题是(我认为),当它运行了 1 次并运行了第二次时,@cy
已经声明了,我怎样才能让它每次都不同?
最佳答案
您不能多次向命令添加相同的参数。你可以Clear
您在每次 迭代结束时的参数;
foreach (ListItem item in CheckBoxList1.Items)
{
...
...
cmd.Parameters.Clear();
}
或者更好的是,在 foreach 之前定义您的参数,只是在其中添加/更改它们的值。
var parameter1 = new SqlParameter("@cy", SqlDbType.VarChar);
var parameter2 = new SqlParameter("@farve", SqlDbType.VarChar);
cmd.Parameters.Add(parameter1);
cmd.Parameters.Add(parameter2);
foreach (ListItem item in CheckBoxList1.Items)
{
...
...
cmd.Parameters["@cy"].Value = id;
cmd.Parameters["@farve"].Value = CheckId;
}
也可以使用 using
statement自动处理您的连接和命令,而不是手动调用 Close
或 Dispose
方法。
关于c# - 插入 SQL 数据库,在带有复选框列表的 foreach 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35339696/