1

关于填写的问题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 秒。
而对于 130 000 则需要更多时间(但不是 130 000 秒)。
但无论如何,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吗?

4

1 回答 1

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
于 2012-04-30T19:58:37.453 回答