2012-06-28 28 views
0

我從XML中檢索值並存儲在數據表中,之後我將數據表值插入數據庫。如何遍歷數據表列並在vb.net中動態地爲其賦值?

數據庫表結構將與我創建的數據表結構相同。

在下面的XML中,我只有3個節點(6個值包含EmpName和EmpID),所以我必須將這些節點值分配給我的數據表的前六列。 datatable中的其他列應該是空的。我如何循環?

注意:表結構僅固定爲15個員工詳細信息,這可能聽起來很愚蠢,但這僅僅是我的方案的示例,實際上與員工詳細信息無關。如果XML中超過15個節點,我將不得不忽略它。

XML:

<Employee> 
    <add> 
     <EmpName>Ronaldo</EmpName> 
     <EmpID>14</EmpID> 
    </add> 
    <add> 
     <EmpName>Messi</EmpName> 
     <EmpID>15</EmpID> 
    </add> 
    <add> 
     <EmpName>David</EmpName> 
     <EmpID>16</EmpID> 
    </add> 
    </Employee> 

數據表:

 dt_FAQ.Columns.Add("Employee_1", GetType(String)) 
     dt_FAQ.Columns.Add("EmpID_1", GetType(String)) 
     dt_FAQ.Columns.Add("Employee_2", GetType(String)) 
     dt_FAQ.Columns.Add("EmpID_2", GetType(String)) 
     dt_FAQ.Columns.Add("Employee_3", GetType(String)) 
     dt_FAQ.Columns.Add("EmpID_3", GetType(String)) 
     dt_FAQ.Columns.Add("Employee_4", GetType(String)) 
     dt_FAQ.Columns.Add("EmpID_4", GetType(String)) 
     dt_FAQ.Columns.Add("Employee_5", GetType(String)) 
     dt_FAQ.Columns.Add("EmpID_5", GetType(String)) 
     dt_FAQ.Columns.Add("Employee_6", GetType(String)) 
     dt_FAQ.Columns.Add("EmpID_6", GetType(String)) 
     dt_FAQ.Columns.Add("Employee_7", GetType(String)) 
     dt_FAQ.Columns.Add("EmpID_7", GetType(String)) 
     dt_FAQ.Columns.Add("Employee_8", GetType(String)) 
     dt_FAQ.Columns.Add("EmpID_8", GetType(String)) 
     dt_FAQ.Columns.Add("Employee_9", GetType(String)) 
     dt_FAQ.Columns.Add("EmpID_9", GetType(String)) 
     dt_FAQ.Columns.Add("Employee_10", GetType(String)) 
     dt_FAQ.Columns.Add("EmpID_10", GetType(String)) 
     dt_FAQ.Columns.Add("Employee_11", GetType(String)) 
     dt_FAQ.Columns.Add("EmpID_11", GetType(String)) 
     dt_FAQ.Columns.Add("Employee_12", GetType(String)) 
     dt_FAQ.Columns.Add("EmpID_12", GetType(String)) 
     dt_FAQ.Columns.Add("Employee_13", GetType(String)) 
     dt_FAQ.Columns.Add("EmpID_13", GetType(String)) 
     dt_FAQ.Columns.Add("Employee_14", GetType(String)) 
     dt_FAQ.Columns.Add("EmpID_14", GetType(String)) 
     dt_FAQ.Columns.Add("Employee_15", GetType(String)) 
     dt_FAQ.Columns.Add("EmpID_15", GetType(String)) 
+0

數據應添加在行基本,而不是列基本,你是什麼意思:「將這些節點值分配到我的數據表的前六列」? – Thinhbk

+0

@Thinhbk「將這些節點值分配給我的數據表的前六列」含義:XML中有3個Emp名稱和3個Emp ID,應該分配給我的數據表的Employee_1,Employee_2,Employee_3,EmpID_1,EmpID_2,EmpID_3。這是我的數據表的第一個六列 – Anuya

+0

@Thinhbk你有一個循環的例子,這樣的數據應該添加在行基本,而不是列基本? – Anuya

回答

0

試試這個將數據添加到您的行,可以代替 「值」 & i.ToString()與您的實際數據。

Dim workRow As DataRow 
Dim i As Integer 

workRow = dt_FAQ.NewRow() 

For i = 0 To 28 
    if(i % 2 == 0) { 
    workRow(i) = node[Math.Floor(i/2)].EmpName 
    } 
    else 
    { 
    workRow(i) = node[Math.Floor(i/2)].EmpID 
    } 
Next 

dt_FAQ.Rows.Add(workRow) 

HTH。

+0

我不明白你的觀點。你是否傳遞了列名或節點值來替換「值」?對不起,我有點困惑。謝謝 – Anuya

+0

我更新了答案。 – Thinhbk