Sql server SQL Server查询参数,用于将数据表复制到另一个表表单ListView VB.net

Sql server SQL Server查询参数,用于将数据表复制到另一个表表单ListView VB.net,sql-server,vb.net,Sql Server,Vb.net,我正在使用VB.net 2013和SQL Server Express。我想将数据从listview中显示的表复制到临时表。但我有一个错误: 未为类型“String”和“System.Windows.Forms.ListViewItem.ListViewSubItem”定义运算符“&” 正确的参数是什么 我的代码如下所示 For Each itm As ListViewItem In ListViewMasterBiaya.CheckedItems Dim SIMPAN As S

我正在使用VB.net 2013和SQL Server Express。我想将数据从listview中显示的表复制到临时表。但我有一个错误:

未为类型“String”和“System.Windows.Forms.ListViewItem.ListViewSubItem”定义运算符“&”

正确的参数是什么

我的代码如下所示

For Each itm As ListViewItem In ListViewMasterBiaya.CheckedItems
        Dim SIMPAN As String = "INSERT INTO TempEntriBiaya WHERE NoKode='" & ListViewMasterBiaya.SelectedItems(0).SubItems(0) & "'"
        CMD = New SqlCommand(SIMPAN, CONN)
        CMD.ExecuteNonQuery()
    Next
End Sub
我还包括下面的图像,当我检查它时,数据也会复制到临时表中


在线评论和解释。以下是LarsTech的评论

Dim SIMPAN As String=“插入TempEntriBiaya(Column1Name,Column2Name)值(@Column1,@Column2);”
'Using…End Using块确保ADO对象已关闭且
'如果出现错误,则已释放事件
将cn用作新的SqlConnection(“您的连接字符串”)
'命令和参数只需声明一次
'在循环之外,只有参数的值更改
使用cmd作为新的SqlCommand(SIMPAN,cn)
cmd.Parameters.Add(“@Column1”,SqlDbType.Int)
cmd.Parameters.Add(“@Column2”,SqlDbType.VarChar)
'在最后可能的时刻打开连接
cn.Open()
对于ListViewMasterBiaya.CheckedItems中的每个itm作为ListViewItem
cmd.Parameters(“@Column1”).Value=itm.SubItems(0).Text
cmd.Parameters(“@Column2”).Value=itm.SubItems(1).Text
cmd.ExecuteNonQuery()
下一个
终端使用
终端使用
编辑使用事件ListView.ItemChecked


在线评论和解释。以下是LarsTech的评论

Dim SIMPAN As String=“插入TempEntriBiaya(Column1Name,Column2Name)值(@Column1,@Column2);”
'Using…End Using块确保ADO对象已关闭且
'如果出现错误,则已释放事件
将cn用作新的SqlConnection(“您的连接字符串”)
'命令和参数只需声明一次
'在循环之外,只有参数的值更改
使用cmd作为新的SqlCommand(SIMPAN,cn)
cmd.Parameters.Add(“@Column1”,SqlDbType.Int)
cmd.Parameters.Add(“@Column2”,SqlDbType.VarChar)
'在最后可能的时刻打开连接
cn.Open()
对于ListViewMasterBiaya.CheckedItems中的每个itm作为ListViewItem
cmd.Parameters(“@Column1”).Value=itm.SubItems(0).Text
cmd.Parameters(“@Column2”).Value=itm.SubItems(1).Text
cmd.ExecuteNonQuery()
下一个
终端使用
终端使用
编辑使用事件ListView.ItemChecked



…子项(0)。Text
为什么忽略itm变量?CheckedItems和SelectedItems是不同的集合。使用参数可以避免SQL注入和格式错误。@LarsTech,那么我应该使用什么呢?什么使用“itm”参数?不,它是您试图在where子句中匹配的值。不清楚您试图在表中“插入”什么。通常,除非执行更新查询,否则不会有“where”子句。Insert应该类似于“Insert INTO table(column1,column2)VALUES(@item1,@item2)`这些值将是您试图放入表中的“what”的参数。
…子项(0).Text
为什么忽略itm变量?CheckedItems和SelectedItems是不同的集合。使用参数可以避免SQL注入和格式错误。@LarsTech,那么我应该使用什么?什么使用“itm”参数?不,它是您试图在where子句中匹配的值。不清楚“您试图插入什么”“坐到桌子上。通常,除非执行更新查询,否则不会有“where”子句。Insert应该类似于“插入表(第1列,第2列)的值(@item1,@item2)`这些值将是“什么”的参数您正试图将项放入表中。因此,将项作为数据库表列参数,对吗?如果我的数据库表中有9列,则在插入时,我必须为表数据设置9项或从column1到column9的参数。@Joel Coehoorn,我已经成功地尝试过了。但是有一个新的问题,当我选择了2个我检查过的数据,但是进入数据库的数据变成了4。我检查的数据量的倍数。当我只检查2个数据时,我只需要数据库中的2个数据??itm是ListView.CheckedItems中的元素之一。它表示ListView中的一行。每行都有保存每列中的值的子项。您需要为Insert语句从数据库中获取列的真实名称。参数名称(以@开头的名称)可以是您想要的任何名称。它们必须与添加到命令中的参数名相匹配。除非您已经运行了两次代码,否则我不知道如何进行多次插入。这段代码是如何运行的?它是从哪个事件调用的?在检查事件ListViewMasterBiaya_Item时运行代码。那么,如何呢?那么,项作为数据库表列参数对吗?如果我的数据库表中有9列,则在插入时,我必须为表数据设置9项或从column1到column9的参数。@Joel Coehoorn,我已经成功地尝试过了。但是有一个新的问题,当我选择了2个我检查过的数据,但是进入数据库的数据变成了4。我检查的数据量的倍数。当我只检查2个数据时,我只需要数据库中的2个数据??itm是ListView.CheckedItems中的元素之一。它表示ListView中的一行。每行都有保存每列中的值的子项。您需要为Insert语句从数据库中获取列的真实名称。参数名称(以@开头的名称)可以是您想要的任何名称。它们必须与添加到命令中的参数名相匹配。除非您已经运行了两次代码,否则我不知道如何进行多次插入。这段代码是如何运行的?它是从哪个事件调用的?代码在事件ListViewMasterBiaya_ItemChe时运行
Private Sub ListViewMasterBiaya_ItemChecked(sender As Object, e As ItemCheckedEventArgs) Handles ListViewMasterBiaya.ItemChecked
        'e.Item returns the ListViewItem that changed its check
        If e.Item.Checked = True Then
            Dim SIMPAN As String = "INSERT INTO TempEntriBiaya (Column1Name, Column2Name) Values (@Column1, @Column2);"
            'The Using...End Using blocks ensure that your ADO objects are closed and 
            'disposed event if there is an error
            Using cn As New SqlConnection("Your connection string")
                Using cmd As New SqlCommand(SIMPAN, cn)
                    cmd.Parameters.Add("@Column1", SqlDbType.Int).Value = e.Item.SubItems(0)
                    cmd.Parameters.Add("@Column2", SqlDbType.VarChar).Value = e.Item.SubItems(1)
                    'Open the connection at the last possible moment
                    cn.Open()
                    cmd.ExecuteNonQuery()
                End Using
            End Using
        End If
End Sub