2013-05-18 32 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值的解析。