使用ASP.NET Web表单将多个插入数据插入数据库

时间:2014-05-09 10:45:28

标签: c# asp.net

我想通过以下代码将多个数据插入数据库:

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'已经被声明。变量   名称在查询批处理或存储过程中必须是唯一的。“

当我重新调整程序时,我只看到我保存了记录。你有什么想法吗?

1 个答案:

答案 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);