私はC++プログラマーであり、.NETデータベースモデルに精通していません。私は通常、データベースからデータを読み取るためにIDataReader
(OdbcDataReader
、、OledbDataReader
または)を使用します。SqlDataReader
大量のデータが必要な場合もありますがDataAdapter
、ODBCなどのネイティブライブラリに存在するスクロール可能なカーソルの機能を実現するにはどうすればよいですか?
皆様のご回答ありがとうございましたが、お受けできない状況にあります。もちろん、これは私の問題を完全に説明できなかった私のせいです。削除された回答の1つにコメントとして説明します。
クライアント側プログラムとMSSQLの間のプロキシとして機能するプログラムを作成する必要があります。このライブラリには、次の要件があります。
- 私のプログラムはMSSQL2000と互換性があるはずです
- ユーザーから送信されるすべてのテーブルとクエリがわからないので、情報を追加してログを作成し、MSSQLに対して実行する必要があるため、次のような手法を使用するのは非常に困難です。クエリの順序フィールドまたはテーブルの主キーに基づきます(私の作品はすべて1つのデータベースにありますが、そのデータベースは巨大であり、時間の経過とともに変更される可能性があります)。
- クライアントが必要とするのはデータの一部だけで、ほとんどのDBMSはサポートしていませんが
LIMIT OFFSET
、残念ながらMSSQL
それをサポートしてROW_NUMBER
いません。また、サポートされてMSSQL2000
いる場合は、プログラムロジックを理解する必要があり、SQLコマンドの解析が必要です(実際には私は解析ライブラリを作成していますboost::spirit
が、それはネイティブコードであり、その機能についてはまだ100%確信がありません)。 - 私は複数のクライアントを持っているかもしれませんが、それらによって送信されるクエリのほとんどは、いくつかの事前定義されたクエリの1つです(もちろん、ユーザーはカスタムクエリを送信しますが、すべてのクエリの約30%です)。そのカーソルとカスタムキャッシュを使用してクライアントに応答します。
- サーバーマシンとその
MSSQL
専用プログラムなので、サーバーとDBMSのすべての機能を使用して機能を実現したいと考えています。
だから今:
- スクロール可能なカーソルを使用する際の問題は何ですか?なぜそれらを避ける必要があるのですか?
- .NETでスクロール可能なカーソルを使用するにはどうすればよいですか?