我目前正在构建一个应用程序,用户将数据输入到网格中,然后将其插入到SQl表中。 但是我遇到问题,让它插入超过顶行。我收到一个错误,指出已为该过程声明了太多参数。 我试图执行一个循环,每行插入一次。 运行时,插入顶行但忽略其他任何内容
For i = 0 To dgvRI.Rows.Count - 1
sqlRI.CommandText = "dbo.vb_insert"
sqlRI.CommandType = CommandType.StoredProcedure
sqlRI.Parameters.Add("@accid", SqlDbType.VarChar).Value = accid
sqlRI.Parameters.Add("@rnum", SqlDbType.Int).Value = dgvRI.Rows(i).Cells(0).Value
sqlRI.Parameters.Add("@rilim", SqlDbType.Decimal).Value = dgvRI.Rows(i).Cells(1).Value
sqlRI.Parameters.Add("@riatt", SqlDbType.Decimal).Value = dgvRI.Rows(i).Cells(2).Value
sqlRI.Parameters.Add("@rishare", SqlDbType.Decimal).Value = dgvRI.Rows(i).Cells(3).Value
sqlRI.Parameters.Add("@rname", SqlDbType.VarChar).Value = dgvRI.Rows(i).Cells(4).Value
sqlRI.Parameters.Add("@bname", SqlDbType.VarChar).Value = dgvRI.Rows(i).Cells(5).Value
sqlRI.Parameters.Add("@type", SqlDbType.VarChar).Value = dgvRI.Rows(i).Cells(6).Value
sqlRI.Parameters.Add("@cov", SqlDbType.VarChar).Value = dgvRI.Rows(i).Cells(7).Value
sqlRI.Parameters.Add("@prop", SqlDbType.VarChar).Value = dgvRI.Rows(i).Cells(8).Value
sqlRI.Parameters.Add("@loc", SqlDbType.VarChar).Value = dgvRI.Rows(i).Cells(9).Value
sqlRI.Parameters.Add("@con", SqlDbType.VarChar).Value = dgvRI.Rows(i).Cells(10).Value
sqlRI.Parameters.Add("@prem", SqlDbType.Decimal).Value = dgvRI.Rows(i).Cells(11).Value
sqlRI.Parameters.Add("@curr", SqlDbType.VarChar).Value = dgvRI.Rows(i).Cells(12).Value
i += sqlRI.ExecuteNonQuery()
Next
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
答案 0 :(得分:0)
为每一行创建新实例,我认为你的对象是每次都添加相同的参数。
sqlRI = new sqlRI();//create new instance everytime
sqlRI.CommandText = "dbo.vb_insert"
sqlRI.CommandType = CommandType.StoredProcedure
sqlRI.Parameters.Add("@accid", SqlDbType.VarChar).Value = accid