0

我正在开发 Windows 应用程序vb,我想在其中添加值,datatable如下while loop所示。

 If hscode <> "" Then
            da1 = New OleDbDataAdapter("select * from [" & tablename & "] where [ItemNo] like '" & hscode & "%'", myConnection)
            da1.Fill(dt2)
            dtab = dt2.Clone

            dtab.Merge(dt2, True)


            Dim l As Integer
            l = 0
            For l = 0 To dt2.Rows.Count - 1
                dtab = dt2.Clone
                dtab.ImportRow(dt2.Rows(l))
            Next
            dt2.Clear()

        End If

在上面的代码中,当datatable第一次填充时,它只one row接受DTAB datatable. 它第二次抛出error. 谁能告诉我怎么做concatenate两个datatablegridview实际上我想根据一些显示多个数据库值queries

4

1 回答 1

0

我看不到您的其余代码,但就像现在一样,填充数据dt2表 ()、将其结构克隆到另一个表 ( dtab) 中,然后遍历dt2行并将这些行导入dtab.
你可以简单地填写 dtab

但是,假设您出于其他原因需要将 dtab 与 dt2 分开,那么我认为如果您使用DataTable的Copy方法,您几乎可以删除所有代码

If hscode <> "" Then
     da1 = New OleDbDataAdapter("select * from [" & tablename & "] where [ItemNo] like '" & hscode & "%'", myConnection)
     da1.Fill(dt2)
     dtab = dt2.Copy()
     dt2.Clear()
End If

另外,我还认为您应该更改原始查询以避免字符串连接并使用这样的参数化查询

....
Dim queryText = "select * from [" & tablename & "] where [ItemNo] like ?"
da1 = New OleDbDataAdapter(queryText, myConnection)
da1.SelectCommand.Parameters.AddWithValue("@p1", hscode & "%")
....

这将避免 Sql 注入和解析 hscode 值的问题。

于 2013-05-18T08:14:28.797 回答