我想通过以下代码将多个数据插入数据库:
protected void btnInsert_Click(object sender, EventArgs e)
{
int i = 0;
gvHitung.DataBind();
int Loop = gvHitung.Rows.Count;
while (i < Loop)
{
DataView dv = (DataView)sdsHitung.Select(DataSourceSelectArguments.Empty);
DataRowView drv = dv[i];
string Kd_Modul = drv["Kd_Modul"].ToString();
sdsDataNilai.InsertParameters.Add("Binusian_Id",tbBinId.Text);
sdsDataNilai.InsertParameters.Add("Kd_Jurusan",tbKdJur.Text);
sdsDataNilai.InsertParameters.Add("Angkatan",tbAngkatan.Text);
sdsDataNilai.InsertParameters.Add("Kd_Modul",Kd_Modul);
sdsDataNilai.Insert();
i++;
}
gvDataNilai.DataBind();
}
但最终得到了错误消息
“变量名称'@Binusian_Id'已经被声明。变量 名称在查询批处理或存储过程中必须是唯一的。“
当我重新调整程序时,我只看到我保存了记录。你有什么想法吗?
答案 0 :(得分:1)
因为在while
语句的每次迭代中,您都会尝试再次逐个添加这些参数。
在第一次迭代中没问题,因为它在开始时没有任何参数。但在第二次迭代中,您的命令已经具有这些参数。这就是你得到错误的原因;
嘿伙计,您的命令已经有一个名为@Binusian_Id的参数,为什么要再次添加相同的参数?
在再次添加参数之前,您需要使用SqlParameterCollection.Clear
method清除参数,例如;
sdsDataNilai.InsertParameters.Clear();
sdsDataNilai.InsertParameters.Add("Binusian_Id",tbBinId.Text);
sdsDataNilai.InsertParameters.Add("Kd_Jurusan",tbKdJur.Text);
sdsDataNilai.InsertParameters.Add("Angkatan",tbAngkatan.Text);
sdsDataNilai.InsertParameters.Add("Kd_Modul",Kd_Modul);