关于填写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:我可以跳过填充吗?
我的意思是,在填充datatable之后,我对datatable的每一行执行一次操作,并将其转换为一个实体:
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吗?
发布于 2012-04-30 19:58:37
如果要尝试,可以跳过此方法的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 当然,在obiect的构造函数中,您应该读取数据并设置对象的内部状态。
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 Classhttps://stackoverflow.com/questions/10389224
复制相似问题