关于填写OleDbDataAdapter
的问题。
我有:
Dim cmd As OleDbCommand = New OleDbCommand(myQuery), myConnection)
Dim da As OleDbDataAdapter = New OleDbDataAdapter()
Dim dtDonnees As DataTable = New DataTable()
da.Fill(dtDonnees)
填充需要花费太多时间 20行需要20秒 而对于13万,它需要更多(但不是13万秒) 但无论如何,20秒太多了。
为什么需要这么多时间?
问题第2部分:我可以跳过填写吗?
我的意思是,在填充数据表后,我为每一行数据表执行一次操作并转换为实体:
Dim returnList As New List(Of myObject)(dtDonnees.Rows.Count)
For Each rowDonnee As DataRow In dtDonnees.Rows
returnList.Add(New myObject(rowDonnee))'set every data of the row into my new object
Next
我可以通过OleDbDataAdapter
的每一行吗?
答案 0 :(得分:0)
如果您想尝试,可以使用此方法跳过DataAdapter填充(假设不需要DataTable)。不确定你的表现会有多大提升。
Dim cmd As OleDbCommand = New OleDbCommand(myQuery, myConnection)
Dim reader As OleDbDataReader = cmd.ExecuteReader()
while reader.Read()
returnList.Add(New myObject(reader))
end while
当然,在你的对象的构造函数中,你应该读取数据并设置对象的内部状态
Public Class myObject
Dim myData As String
' other internal var to keep state of this object instance
Public Sub New(ByVal reader as OleDbDataReader)
myData = reader.GetString(0)
' read and initialize other internal data.
End Sub
End Class