我有多个数据集的最佳方式是什么?
我考虑创建一个例程来创建名称中带有数字的数据集,每个数据集都有所需的数据,但这不是很聪明(尽管可能有效)
我想创造一个像“数据集阵列”的东西 VB:
<whatever> = ds(1).<whatever>
<whatever> = ds(2).<whatever>
...
...
并且能够看到我在这个“数组”中有多少数据集是可取的。
欢迎使用c#或vb.net中的任何答案! (虽然我正在开发vb.net)
我尝试过像数组
Dim dinfo As DirectoryInfo = New DirectoryInfo("c:\")
Dim finfo As FileInfo() = dinfo.GetFiles("*.xml")
Dim ds() As DataSet = Nothing
For a = 0 To finfo.GetLength(0) Step 1
ds(a).ReadXml("c:\" + finfo(a).Name)
Next
我得到了
***Object reference not set to an instance of an object.***
所以我认为它不是这样的。
(obs,我已经完成了将一个XML加载到一个数据集的相同代码,它工作得很好,我来回走动不止一次,以确保它不仅仅是一个逻辑错误,它的语法和缺乏编程知识..哈哈)
谢谢!
答案 0 :(得分:3)
过去马塞洛的答案是不要做 数据集很大,使用一个你已经消耗了太多的内存。
我做了什么:
创建了一个数据集并使用它(得到我想要的字段)然后清理它:
dim ds as new dataset
这行代码在我加载每个文件的FOR
中,因此每次都会刷新。工作得很好。
答案 1 :(得分:2)
你当然可以通过以下方式来做到这一点:
Dim ds(100) as DataSet
那会有效。但是,数据集可以包含多个表,使数据集数组成为第四维数组(数据集,表,行,列)。如果您确实需要此功能,那么您可以创建如上所述的数组,或使用数组列表,或任何其他最适合您需要的.net集合类。
~~~~~~~~~~~~~~~~~~~~~~~~~~~看完编辑后的编辑~~~~~~~~~~~~~~~ ~~~~~~~
您获得空引用异常的原因是,如果您声明没有数字,则数组中的对象为零。如果您不知道在设计时需要多少数据集,那么您应该考虑使用arraylist或其中一个.net集合。有一个你可以运行的语句基本上是:“Redim Preserve ds(ds.length)”会使数组的大小增加1,所以你可以填充下一个,但我不推荐它。这将在内存中重新创建整个数组,复制值,然后删除旧数组。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~
好的,以下是ArrayList的外观:
Dim dinfo As DirectoryInfo = New DirectoryInfo("c:\")
Dim finfo As FileInfo() = dinfo.GetFiles("*.xml")
Dim ds As New ArrayList()
For a As Integer = 0 To finfo.GetLength(0)
Dim tempDS As New DataSet
tempDS.ReadXml("c:\" + finfo(a).Name)
ds.Add(tempDS)
Next
~~~~~~~~~~~~~~~~~~~~~~~~~~数组版~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
如果您对arrayList感觉不舒服,下面是常规数组的外观:
Dim dinfo As DirectoryInfo = New DirectoryInfo("c:\")
Dim finfo As FileInfo() = dinfo.GetFiles("*.xml")
Dim ds(-1) As DataSet
For a As Integer = 0 To finfo.GetLength(0)
ReDim Preserve ds(ds.Length)
ds(ds.Length - 1) = New DataSet()
ds(ds.Length - 1).ReadXml("c:\" + finfo(a).Name)
Next
答案 2 :(得分:0)
您确定不需要一个包含多个表的DataSet吗?
然后,您可以为每个表命名。