1
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秒かかります。
また、130 000の場合は、もう少し時間がかかります(ただし、13 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
の各列を渡すことはできますか?
ええ、私が得たもののthatsの内部状態を設定する必要があります。コンストラクタはdatarowを取得するので、LocalVar = tryPars(myRow( "columnX"))を設定します。 – forX
私は読者が同じことをすることができると思います。なぜスピードが上がらないと言ったのですか? – forX
あなたの例では、2つのループがあると言えます。 1つはDataSetを埋め、もう1つはオブジェクトを構築します。 DataReaderを使用して、1つのループと、データテーブル内の行のメモリ内のキャッシュを削除します。残念ながら、DataReaderはDataRow内の現在のデータラインを簡単に変換する方法がありません。このメソッドを使用するには、新しいコンストラクタを追加する必要があります。スピードについてデータレディヤーが処理速度を上げるかどうかは言えませんが、ベンチマークが必要です。インスタンスを構築して初期化するコストは、reader.read/adapter.fillのコストよりも関連している可能性があります – Steve