Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ DataReader 対 DataSet | データベース操作の最適化
C#による.NET入門

bookDataReader 対 DataSet

メニューを表示するにはスワイプしてください

前のセクションでは、MySqlDataReader オブジェクトを使用してデータベースからデータを読み取りました。

理論的には、DataReader(または MySqlDataReader)はクエリを実行した際にすべてのデータを一度に取得するのではなく、逐次的にデータを取得します。つまり、1行ずつデータを取得します。Read() メソッドを実行すると、データベースから次の行をリアルタイムで取得します。

このため、データを取得している間はデータベースへのアクティブな接続が必要です。また、データ取得後に DataReader オブジェクトをCloseする必要がある理由でもあります。

一方、データを取得する別の方法として DataAdapter があります。DataAdapter はデータベースから関連データを取得し、取得したデータで DataSet を埋めます。これは本質的にそのデータのコピーを作成することになります。DataSet は、SQL database から取得したデータを格納するための特別なクラスです。DataSet からデータを簡単にアクセス・閲覧できます。

両方の方法はほとんど同じように見えるかもしれませんが、DataReaderDataSet にはいくつか重要な違いがあります:

メモリ使用量と保存方法:

  • DataReader はデータベースから1件ずつデータを取得し、データを読み込んでいる間は接続を開いたままにします。データをメモリに保存しません。そのため、メモリ使用量は最小限です。
  • DataSet はデータベースから取得したデータをアプリケーション内のメモリに保存します。

アクセシビリティとナビゲーション:

  • DataReader は、高速な前方専用のデータストリームを提供。データへの逐次アクセスのみが可能で、ランダムアクセスナビゲーションはサポートされていません。一度読み取ったレコードは、クエリを再実行しない限り再訪できません
  • DataSet は、任意の順序で行を反復処理でき、DataSet 内のデータを変更しても、データベース内の元のデータには影響しません

リアルタイムアクセスと切断型アクセス:

  • DataReader は、データベースからのリアルタイムアクセスを提供します。データの読み取り中はデータベースへのアクティブな接続が必要であり、すべてのデータが読み取られるか、DataReader が明示的に閉じられるまで接続は開いたままです。
  • DataSet は、切断型アクセスを提供します。データベースからデータを取得してDataSet に格納した後は、データベースへの接続を閉じることができます。その後、アプリケーション内でデータをオフラインで操作でき、データベースへの接続を維持する必要はありません。

上記の利点と欠点から、DataReader前方専用アクセスで十分なシナリオに適しており、DataSet接続時間を最小限に抑えたい場合データを対話的に操作したい場合により適しています。

1. 次のうち、DataReader に関する正しい記述はどれですか?

2. DataSetはメモリ内に何を保存しますか?

question mark

次のうち、DataReader に関する正しい記述はどれですか?

正しい答えを選んでください

question mark

DataSetはメモリ内に何を保存しますか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 5.  3

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 5.  3
some-alt