vb.net - VB.Net 清除数据集和数据表以便接收新的数据集
问题描述
在我可以将新值分配给数据表列表之前,我无法清除数据集。程序正在从每个文件中读取数组值,每个文件的数据存储在每个数据表的列表中。稍后,我想从每个数据表中获取一些数据,存储到新数据表中并清除/删除旧数据表(通过设置 dataset.clear())。但是,当我转到第二个文件夹并收集新文件时,会在 "dsSet.Tables.Add(dataInfo)" 行抛出错误。任何人都知道为什么,因为 dataset.clear() 应该从数据集中删除所有信息,包括数据表。正确的?当我没有清除数据集时,我抛出错误说“数据表(0)已经存在”。代码如下:
Dim dataReader As IO.StreamReader
Dim readEachLine As String
Dim indexTable As DataTable
Dim dataInfo As DataTable
Dim dsSet As DataSet = New DataSet("Set1")
For Each folder As String In Directory.GetDirectories(folderPath, "*", System.IO.SearchOption.AllDirectories)
Dim myFiles As String()
myFiles = IO.Directory.GetFiles(folder, "*.txt")
Dim filesCounter As Integer = myFiles.Count
For i As Integer = 0 To filesCounter - 1
dataInfo = New DataTable(i)
With dataInfo
.Columns.Add("dtData1", System.Type.GetType("System.String"))
.Columns.Add("dtData2", System.Type.GetType("System.String"))
.Columns.Add("dtData3", System.Type.GetType("System.String"))
.Columns.Add("dtData4", System.Type.GetType("System.String"))
.Columns.Add("dtData5", System.Type.GetType("System.String"))
.Columns.Add("dtData6", System.Type.GetType("System.String"))
.Columns.Add("dtData7", System.Type.GetType("System.String"))
.Columns.Add("dtData8", System.Type.GetType("System.String"))
.Columns.Add("dtData9", System.Type.GetType("System.String"))
.Columns.Add("dtData10", System.Type.GetType("System.String"))
End With
dataReader = New IO.StreamReader(ArrayFileData(i), System.Text.Encoding.Default)
Do
readEachLine = dataReader.ReadLine
If readEachLine Is Nothing Then Exit Do
Dim dataColumns() As String = readEachLine.Split(",")
Dim dataFileRow As DataRow = dataInfo.NewRow
dataFileRow("dtData1") = dataColumns(0)
dataFileRow("dtData2") = dataColumns(1)
dataFileRow("dtData3") = dataColumns(2)
dataFileRow("dtData4") = dataColumns(3)
dataFileRow("dtData5") = dataColumns(4)
dataFileRow("dtData6") = dataColumns(5)
dataFileRow("dtData7") = dataColumns(6)
dataFileRow("dtData8") = dataColumns(7)
dataFileRow("dtData9") = dataColumns(8)
dataFileRow("dtData10") = dataColumns(9)
dataInfo.Rows.Add(dataFileRow)
Loop
dataReader.Close()
dsSet.Tables.Add(dataInfo)
Next
rowCounter = 0
For k As Integer = 0 To (dsSet.Tables(0).Rows.Count - 1)
rowCounter = rowCounter + 1
Dim newIndexRow As DataRow = indexTable.NewRow
If rowCounter = 1 Then
newIndexRow("Data1") = dsStocks.Tables(0)(dsStocks.Tables(0).Rows.Count - 1)("dtData1")
newIndexRow("Data2") = dsStocks.Tables(0)(dsStocks.Tables(0).Rows.Count - 1)("dtData2")
newIndexRow("Data3") = dsStocks.Tables(0)(dsStocks.Tables(0).Rows.Count - 1)("dtData3")
newIndexRow("Data4") = dsStocks.Tables(0)(dsStocks.Tables(0).Rows.Count - 1)("dtData4")
newIndexRow("Data5") = dsStocks.Tables(0)(dsStocks.Tables(0).Rows.Count - 1)("dtData5")
newIndexRow("Data6") = dsStocks.Tables(0)(dsStocks.Tables(0).Rows.Count - 1)("dtData6")
newIndexRow("Data7") = dsStocks.Tables(0)(dsStocks.Tables(0).Rows.Count - 1)("dtData7")
newIndexRow("Data8") = dsStocks.Tables(0)(dsStocks.Tables(0).Rows.Count - 1)("dtData8")
newIndexRow("Data9") = dsStocks.Tables(0)(dsStocks.Tables(0).Rows.Count - 1)("dtData9")
newIndexRow("Data10") = dsStocks.Tables(0)(dsStocks.Tables(0).Rows.Count - 1)("dtData10")
indexTable.Rows.Add(newIndexRow)
Else
' will add something later
End If
Next
dsSet.Clear()
' dsSet.Dispose()
' dsSet = Nothing
Next
解决方案
表必须在数据集清除后设置为清除,而不是之前。
dsSet.Clear()
dsSet.Tables.Clear()
推荐阅读
- javascript - 连接两个 NodeJS 服务器的正确方法
- websphere - 用于组织和空间的 ibm 云目标
- tkinter - _tkinter.TclError: 错误的窗口路径名 <
- python - numpy 如何对数组的每个元素进行批量操作
- flutter - Flutter 在类中使用 foreach
- python - 反向分组
- spring - Spring Security - POST方法不起作用
- javascript - Reacts js Ant Design 多输入滑块处理程序
- python - 修改python numpy数组中的结果
- ios - Xcode“隐藏状态栏”向上推动内容