.NET クラス オブジェクトから ADODB.RecordSet を割り当てる必要がありますが、正しく行っているかどうかわかりません。class のオブジェクトで構成される orderList という List がありOrder
、このリストから RecordSet を生成する必要があるとします (参照として adodb があります)。私のコードは次のようになります。
Dim rs As Recordset = New Recordset
rs.Fields.Append("ID", DataTypeEnum.adInteger)
rs.Fields.Append("Sender", DataTypeEnum.adBSTR)
rs.Fields.Append("Receiver", DataTypeEnum.adBSTR)
...
rs.Open()
For Each o In orderList
rs.AddNew()
rs.Fields("ID").Value = o.ID
rs.Fields("Sender").Value = o.Sender
rs.Fields("Receiver").Value = o.Receiver
...
Next
私のテストでは、リストに 10000 個のオブジェクトがある場合、比較的長い時間がかかります: 3 秒以上です。注文数が 100 万を超える場合もあるため、これは遅いです。RecordSet
私が学んだ限りではRecordSet
、テーブルへの直接接続を通常実行しているため、適切に使用しているとは思えません。レコードを 1 つずつ割り当てるのは適切ではありません。しかし、これが私が思いつくことができる唯一の方法です(そして、いくつかのリンクはこれを示唆しています。そこでのパフォーマンスについては言及していませんが)。独自のデータ アクセス レイヤー ライブラリがあり、ほとんどのターゲット オブジェクトは常にメモリ内に存在します。そのため、RecordSet を直接データベースに使用したくありません。
私の質問は、コードを高速に実行するにはどのように変更すればよいですか? 「ソース」は必ずしもList
. 任意の .NET タイプにすることができます。しかし、RecordSet
それは別のコンポーネントからの入力要件であるため、オブジェクトが必要です。