首页 > 解决方案 > 如何在sql参数列表中使用forloop?

问题描述

如何使用 dal 将我的数据 gridview 值添加到数据库中我的代码是这样的

Dim list As New List(Of SqlParameter)

For each row as DataGridView In DataGridView1.Rows
    If row.cell(0).value isnot nothing
        Qry="insert into sale1(Description)values(@1)"
        With list
           .add(new Sqlparameter("@1",row.cells(2).value)
        End with
    End if
Next

标签: asp.netvb.netdesktop-application

解决方案


如果您不想按照@jmcilhinney 在评论中建议的那样做(最好的方法),这应该与您提供的代码最接近,但它不会将数据库代码与用户界面代码分开。

这个想法是在循环外添加一次参数,然后只更改循环中的值。我不得不猜测参数的数据类型和大小。请检查您的数据库并更正代码。

Private Sub OPCode2()
    Using cn As New SqlConnection("Your connection string"),
            cmd As New SqlCommand("insert into sale1 (Description)values(@1)", cn)
        cmd.Parameters.Add("@1", SqlDbType.NVarChar, 300)
        cn.Open()
        For Each row As DataGridViewRow In DataGridView1.Rows
            If row.Cells(0).Value IsNot Nothing Then
                cmd.Parameters("@1").Value = row.Cells(2).Value
                cmd.ExecuteNonQuery()
            End If
        Next
    End Using
End Sub

将代码分开...

Private Sub UICode()
    Dim lst As New List(Of String)
    For Each row As DataGridViewRow In DataGridView1.Rows
        If row.Cells(0).Value IsNot Nothing Then
            lst.Add(row.Cells(2).Value.ToString)
        End If
    Next
    UpdateDatabase(lst)
End Sub

Private Sub UpdateDatabase(lst As List(Of String))
    Using cn As New SqlConnection("Your connection string"),
            cmd As New SqlCommand("insert into sale1 (Description)values(@1)", cn)
        cmd.Parameters.Add("@1", SqlDbType.NVarChar, 300)
        cn.Open()
        For Each s As String In lst
            cmd.Parameters("@1").Value = s
            cmd.ExecuteNonQuery()
        Next
    End Using
End Sub

推荐阅读