在VB中附加数据表

时间:2013-05-18 05:55:17

标签: vb.net gridview datatable while-loop dataadapter

我正在vb开发Windows应用,我希望在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两个datatable。实际上我想在一个gridview中显示多个数据库值,具体取决于某些queries

1 个答案:

答案 0 :(得分: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 Injection和解析hscode值的问题。