SQL Server >= 2005 を使用している場合、IDatareader を実装するだけのリーダーとは対照的に、SQLDataReader を使用する利点は何ですか?
SQLDatareader には選択できる機能が増えているだけですか、それとも SQLDatareader を使用するとパフォーマンスが向上しますか?
これについて説明している記事を歓迎します。
ありがとう!
クリス
SQL Server >= 2005 を使用している場合、IDatareader を実装するだけのリーダーとは対照的に、SQLDataReader を使用する利点は何ですか?
SQLDatareader には選択できる機能が増えているだけですか、それとも SQLDatareader を使用するとパフォーマンスが向上しますか?
これについて説明している記事を歓迎します。
ありがとう!
クリス
まず最初に、誤解を訂正させてください。SQL Server を使用している場合、すべての IDataReader が MS SQL Server からデータを読み取ることができるわけではありません。
.NET 環境 (あなたの質問が当てはまると思います) には、SQL Server にアクセスできる IDataReader を実装する 2 つの具体的なクラスがあります。1 つは SQLDataReader で、もう 1 つは OleDbDataReader です。OleDbDataReader は実際には、基本的に RDBMS 通信プロトコルであるOleDb プロトコルに依存しています。
コードで IDataReader を使用すると、(多かれ少なかれ) その背後にある具体的なデータリーダーを確実に置き換えることができます (たとえば、データベース ベンダーを切り替えることができます。成功した人を私は知りません)。
SQL Server にアクセスする場合、専用の SQLDataReaderは、このソースによると 115% 高速です。これは、ネイティブの SQL サーバー プロトコル (pipes/tcp/ip という名前) を使用するためです。また、MARS などの特別な SQL Server 機能もサポートしています。
.HasRows プロパティは、私が考えることができる唯一のものです。しかし、それは本当に必要ではありません。