vb.net - 带有 DataGridView 的 VB .net
问题描述
cmd.ExecuteNonQuery() 仅将第一行数据传递给数据库,即使我有 3 行。
Dim cmd As New OleDbCommand("insert into Nage(GName,GAge)values(@GName,@Gage)", mycon)
Dim g1name As String
Dim g2age As String
For x As Integer = 0 To DGV1.Rows.Count - 1
g1name = DGV1.Rows(x).Cells(0).Value
g2age = DGV1.Rows(x).Cells(1).Value
cmd.Parameters.AddWithValue("@Gname", g1name)
cmd.Parameters.AddWithValue("@Gage", g2age)
cmd.ExecuteNonQuery()
Next
我正在尝试从 datagridview 添加数据以访问数据库 Datagridview 有 3 行数据,但 cmd.ExecuteNonQuery() 仅将第一行数据传递到数据库,即使我有 3 行。
Dim cmd As New OleDbCommand("insert into Nage(GName,GAge)values(@GName,@Gage)", mycon)
Dim g1name As String
Dim g2age As String
For x As Integer = 0 To DGV1.Rows.Count - 1
g1name = DGV1.Rows(x).Cells(0).Value
g2age = DGV1.Rows(x).Cells(1).Value
cmd.Parameters.AddWithValue("@Gname", g1name)
cmd.Parameters.AddWithValue("@Gage", g2age)
cmd.ExecuteNonQuery()
Next
我想将所有行数据添加到数据库
解决方案
第一次运行循环时,它会向参数集合添加 2 个参数。一切都很好,因为您在 Sql 语句中引用了 2 个参数(@GName 和 @Gage)。在您要添加的第二条记录的循环的下一次迭代中,将另外 2 个参数添加到参数集合中。现在您有 4 个参数,但 Sql 语句中只有 2 个。看到问题了吗?将添加的参数移到循环之外,这样它们只会添加一次,并且只需更改循环中参数的值。
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'The Using blocks ensure that your database objects
'are closed and disposed even if there is an error
Using mycon As New OleDbConnection("Your connection string")
Using cmd As New OleDbCommand("insert into Nage(GName, GAge) values(@GName, @Gage)", mycon)
cmd.Parameters.Add("@GName", OleDbType.VarChar)
cmd.Parameters.Add("@Gage", OleDbType.VarChar)
mycon.Open()
'Changed to a For Each to save a little typing
For Each row As DataGridViewRow In DGV1.Rows
cmd.Parameters("@Gname").Value = row.Cells(0).Value
cmd.Parameters("@Gage").Value = row.Cells(1).Value
cmd.ExecuteNonQuery()
Next
End Using
End Using
End Sub
需要注意的是,对于 OleDb,重要的是参数的顺序,而不是名称。当您使用 Sql Server 时,名称变得很重要。
如果您想研究数据绑定、数据适配器等,您会发现您可以通过 DataAdpater.Update() 更新数据库而无需循环。
推荐阅读
- powershell - 从 CLI 启动窗口的终端并传入可执行命令以运行
- stripe-payments - 在 Stripe Client Only 代码片段中更改数量
- python - 表单标签未显示在 html 上,表单很脆
- javascript - 如何添加和显示内部 html 和 document.getelementby id 值
- python - python元音小写和辅音大写
- java - 如何在 Android 的 Strings.xml 中搜索字符串?
- cs50 - cs50 拼写器不处理大多数单词并且大小写不敏感
- python - 在数据框中使用多个分隔符解析数据
- html - 有没有办法遍历字符串以返回 Ruby 中数组的名字、姓氏和中间名?
- android - Android RecyclerView 不绘制自定义视图;不调用 onDraw