如何在数据表中动态创建列并给其赋值?

14

我需要在DataTable运行时创建列并对其分配值。如何在VB.NET中实现?请提供示例...

2个回答

26

如果您想在VB.Net中创建动态/运行时数据表,那么您应该按照以下步骤执行:

  • 创建Data table对象。
  • 将列添加到该Data table对象中。
  • 将带有值的行添加到该对象中。

例如:

Dim dt As New DataTable

dt.Columns.Add("Id", GetType(Integer))
dt.Columns.Add("FirstName", GetType(String))
dt.Columns.Add("LastName", GetType(String))

dt.Rows.Add(1, "Test", "data")
dt.Rows.Add(15, "Robert", "Wich")
dt.Rows.Add(18, "Merry", "Cylon")
dt.Rows.Add(30, "Tim", "Burst")

如果我不知道要创建多少列,怎么能像dt.Rows.Add(1, "Test", "data")一样固定列呢?甚至可能有10列。怎么办?谢谢 - Anuya

3
你尝试了什么?出了什么问题?
创建 DataColumns 并向 DataTable 添加值是很简单的:
Dim dt = New DataTable()
Dim dcID = New DataColumn("ID", GetType(Int32))
Dim dcName = New DataColumn("Name", GetType(String))
dt.Columns.Add(dcID)
dt.Columns.Add(dcName)
For i = 1 To 1000
    dt.Rows.Add(i, "Row #" & i)
Next

编辑:
如果你想要读取一个 XML 文件并从中加载 DataTable,你可以使用 DataTable.ReadXml

@Anuya:这些列是动态的(New DataColumn....)。如果这不够清楚,请提供更多关于你想要实现的信息。 - Tim Schmelter
我有一个XML文件。当我读取XML的每个节点时,我必须在数据表中创建一列。其中Datatable列名= NodeName,Datatable列值= Node value。由于XML中的节点数量每次都可能不同,因此我必须使其通用化,以便创建列并将值分配给数据表。 - Anuya
@Anuya:然后使用DataTable.ReadXml - Tim Schmelter
读取XML不是我的问题。我的问题不同。我无法像您建议的那样操作,因为XML将有很多子节点,而Datatab;e.ReadXML无法从整个XML中获取一个部分。 - Anuya
@Anuya:你试过使用DataSet.ReadXml吗?它可以为每个子节点创建数据表。 - Tim Schmelter
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接