gpt4 book ai didi

sql-server - 在 VB.Net 中将 Datagrid 数据保存到 SQL Server 数据库

转载 作者:搜寻专家 更新时间:2023-10-30 23:47:44 25 4
gpt4 key购买 nike

我有一个包含数据的数据网格。第一列是带有进口商的组合框,而第二列是进口数量。无论用户的选择如何,我都希望能够将此数据保存到数据库中。

请看下面我的代码。有人可以帮帮我吗?

Dim intReturnValue As Integer = 0

Dim SqlCmd As String = "Update Importer_Balance SET Quantity = Quantity + @Quantity WHERE Importer=@Importer and Product=@product"

Dim ConnObj As SqlConnection = New SqlConnection(clsGlobals.ConnString)
Dim CmdObj As SqlCommand = New SqlCommand(SqlCmd, ConnObj)

For i = 0 To Me.dgvImporter.RowCount - 1
CmdObj.Parameters.AddWithValue("@Importer", Me.dgvImporter.Rows(i).Cells(0).Value)
CmdObj.Parameters.AddWithValue("@Quantity", Me.dgvImporter.Rows(i).Cells(1).Value)
CmdObj.Parameters.AddWithValue("@Product", cboProductName.SelectedValue)
Next

ConnObj.Open()

intReturnValue = CInt(CmdObj.ExecuteNonQuery())

ConnObj.Close()

If intReturnValue > 0 Then
MsgBox("You have successfully updated the product table product.", MsgBoxStyle.Information, "")
ClearForm()
Else
MsgBox("No Record were inserted", MsgBoxStyle.Exclamation, "")
End If

最佳答案

在循环中添加参数但不执行命令,这仅在只有一行时有效,如果必须更新多行,则会导致错误。
您继续在每个循环中将相同的参数读取到相同的命令。

而是将参数的声明移到循环之前,在循环内部只需设置它们的值,然后执行命令。

Dim intReturnValue As Integer = 0
Dim SqlCmd As String = "Update Importer_Balance SET Quantity = Quantity + @Quantity WHERE Importer=@Importer and Product=@product"

Dim ConnObj As SqlConnection = New SqlConnection(clsGlobals.ConnString)
Dim CmdObj As SqlCommand = New SqlCommand(SqlCmd, ConnObj)
CmdObj.Parameters.Add("@Importer", SqlDbType.Int)
CmdObj.Parameters.Add("@Quantity", SqlDbType.Int)
CmdObj.Parameters.Add("@Product", SqlDbType.Int)
ConnObj.Open()

For i = 0 To Me.dgvImporter.RowCount - 1
CmdObj.Parameters("@Importer").Value = Convert.ToInt32(Me.dgvImporter.Rows(i).Cells(0).Value)
CmdObj.Parameters("@Quantity").Value = Convert.ToInt32(Me.dgvImporter.Rows(i).Cells(1).Value)
CmdObj.Parameters("@Product").Value = Convert.ToInt32(cboProductName.SelectedValue)
intReturnValue = CInt(CmdObj.ExecuteNonQuery())

Next

重要说明。 AddWithValue 通过查看传递的值发现参数的数据类型。这种假设是危险的,可能会导致错误。最好使用专门的构造函数,您可以在其中定义参数的类型和大小

关于sql-server - 在 VB.Net 中将 Datagrid 数据保存到 SQL Server 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26192477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com