我正在制作一个具有一个DataGridView的表单,并且正在从SQL数据库中加载值。我试图更新插入到DataGridView中的SQL中所有指定行的单元格数据。我编写了以下代码,但它仅将一行数据更新到SQL数据库。我该怎么办?
Using cmd7 As New SqlCommand("update stockdata set available = @available ,
qty = @qty where itemcode = @itemcode", cn)
For Each row As DataGridViewRow In DataGridView1.Rows
cmd7.Parameters.Add("@itemcode", SqlDbType.VarChar).Value = row.Cells(0).Value
cmd7.Parameters.Add("@available", SqlDbType.VarChar).Value = "no"
cmd7.Parameters.Add("@qty", SqlDbType.VarChar).Value = "0"
cn.Open()
cmd7.ExecuteNonQuery()
cn.Close()
Next
End Using
答案 0 :(得分:0)
很高兴看到使用块,参数和标识数据类型的.Add方法。您一直在重复添加相同的参数,直到较差的旧cmd7有太多参数,不知道该怎么做。 :-)唯一需要更改的是@itemcode的.Value
。因此,我们唯一需要做的就是引用已经在循环外添加的参数集合的成员,并设置其值。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Using cn As New SqlConnection("Your connection String")
Using cmd7 As New SqlCommand("update stockdata set available = @available , qty = @qty where itemcode = @itemcode", cn)
cmd7.Parameters.Add("@available", SqlDbType.VarChar).Value = "no"
cmd7.Parameters.Add("@qty", SqlDbType.VarChar).Value = "0"
cmd7.Parameters.Add("@itemcode", SqlDbType.VarChar)
cn.Open()
For Each row As DataGridViewRow In DataGridView1.Rows
cmd7.Parameters("@itemcode").Value = row.Cells(0).Value
cmd7.ExecuteNonQuery()
Next
End Using
End Using
End Sub
答案 1 :(得分:-1)
尝试使用此方法:尽管未测试。(只需循环遍历datagridview中的所有行)
For Each row As DataGridViewRow In DataGridView1.Rows
Using cmd7 As New SqlCommand("update stockdata set available = @available , qty = @qty where itemcode = @itemcode", cn)
cmd7.Parameters.Add("@itemcode", SqlDbType.VarChar).Value = row.Cells(0).Value
cmd7.Parameters.Add("@available", SqlDbType.VarChar).Value = "no"
cmd7.Parameters.Add("@qty", SqlDbType.VarChar).Value = "0"
cn.Open()
cmd7.ExecuteNonQuery()
cn.Close()
End Using
Next