2013-05-18 34 views
0

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

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 rowDTABdatatable上面的代码。并且第二次投掷了error。 任何人都可以请告诉我如何concatenate两个datatable。实际上我想显示多个数据库值在一个gridview取决于一些queries

+0

你为什么在每个循环执行中都要用dtab = dt2.clone – Sathish

回答

0

我看不到你的代码的其余部分,但因为它是现在,还有在填补一个DataTable(dt2),另一个表(dtab)克隆它的结构,然后在dt2行和进口循环没有意义这些行在dtab
你可以简单地填写DTAB

但是,假设你需要DTAB分开DT2其他原因,那么我认为,如果你使用的DataTable

If hscode <> "" Then 
    da1 = New OleDbDataAdapter("select * from [" & tablename & "] where [ItemNo] like '" & hscode & "%'", myConnection) 
    da1.Fill(dt2) 
    dtab = dt2.Copy() 
    dt2.Clear() 
End If 
Copy方法,你几乎可以删除所有的代码

此外,我还认为你应该改变你原来的查询,以避免字符串连接和使用这样

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

这将避免问题的无线参数化查询Sql注入和hscode值的解析。