FireDAC.Stan.Option.TFDFetchOptions.Mode

提供: RAD Studio API Documentation
移動先: 案内検索

Delphi

property Mode: TFDFetchMode read GetMode write SetMode  stored IsMS default fmOnDemand;

C++

__property TFDFetchMode Mode = {read=GetMode, write=SetMode, stored=IsMS, default=1};

プロパティ

種類 可視性 ソース ユニット
property published
FireDAC.Stan.Option.pas
FireDAC.Stan.Option.hpp
FireDAC.Stan.Option TFDFetchOptions


説明

データをフェッチする方法を制御します。

Mode プロパティを使用すると、結果セットのレコード群を、どのように FreDAC 内部データ ストレージにフェッチするかを制御することができます。

モード 

説明 

fmManual

レコード群は、FireDAC によって自動的にフェッチされません。プログラマは、適宜レコードをフェッチするコードを、次のメソッドを使用して記述しなければなりません:

  • FetchAll - すべてのレコードをフェッチする場合。
  • GetNextPacket - 次のレコード セット(パケット)をフェッチする場合、これには RowsetSize レコードが含まれる。 

fmOnDemand 

レコードは、ナビゲーションまたは他のデータセット メソッドによって要求されると、FireDAC によって自動的にフェッチされます。各要求に応じて、FireDAC は 1 つまたは複数のレコード セットをフェッチします。これには、RowsetSize レコードが含まれます。このモードにより、fmAll モードで発生するような顕著な遅延なく大きな結果セットを開くことができます。しかし、すべてのレコードをフェッチする合計時間は、fmAll モードより大きくなります。たとえば、Microsoft SQL Server では、サーバー側の静的カーソルが使用されます。 

fmAll

すべての結果セット レコードは、データセットの Open 呼出しの際に、FireDAC によって自動的にフェッチされます。大きな結果セットでは、時間がかかる場合もありますが、データセットのナビゲーションは高速です。これは、すべてのレコードが FireDAC 内部データ ストレージに格納されているからです。特定の DBMS の場合(Microsoft SQL Server、MySQL Server、Sybase SQL Anywhere など):

  • クライアント結果セット バッファを解放することで、結果セットを返す次のコマンドを実行することが可能にします。
  • 最大限のフェッチ パフォーマンスを提供します。たとえば、Microsoft SQL Server では、最初の前方向限定カーソルが使用されます。 

fmExactRecsMax 

fmAll と同様ですが、フェッチされたレコードの数(RecordCount プロパティの値)が RecsMax で指定されたものと異なった場合、例外が発生します。 

このモードではまた、ExecSQL で実行される SQL コマンドにも影響があります。更新されたレコードの数(RowsAffected プロパティの値)が RecsMax で指定されたものと異なった場合、例外が発生します。 

fmExactRecsMax フェッチ モードは次のシナリオで使用します:

  • アプリケーションが指定されたキーのレコードのみをフェッチしていることを確認する必要があります(RecsMax を 1 に設定)
  • アプリケーションが指定されたキーのレコードのみを更新または削除していることを確認する必要があります(RecsMax を 1 に設定)

fmOnDemand のデフォルト値は、TFDCustomMemTable の場合、fmAll です。

関連項目