我正在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
。
答案 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值的问题。