OleDbDataAdapter填充数据表

时间:2012-04-30 19:11:36

标签: vb.net oledbdataadapter

关于填写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的每一行吗?

1 个答案:

答案 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