6

TADOQuery コンポーネントには「準備済み」プロパティがあり、準備済みが TRUE に設定されている場合、ADO はコマンドを「準備」すると説明されていますが、これはどういう意味ですか??

マニュアルの説明は次のとおりです。

ADO がコマンドを準備するかどうかを指定するには、Execute メソッドを呼び出す前に Prepared を設定します。Prepared が True に設定され、コマンド コンポーネントがデータ ストアに接続されている場合、ADO はコマンドを実行する前に準備します。Prepared が False に設定されている場合、ADO はコマンドを準備しません。

パラメーターを SQL テキストに挿入しますか?

4

2 に答える 2

6

以下は、Delphi 2007 ヘルプ ファイルからの優れたドキュメントです。

Command オブジェクトの最初の実行の前に、CommandText プロパティで指定されたクエリの準備済み (またはコンパイル済み) バージョンをプロバイダーに保存させるには、Prepared プロパティを使用します。これにより、コマンドの最初の実行が遅くなる可能性がありますが、プロバイダーがコマンドをコンパイルすると、プロバイダーはその後の実行にコンパイル済みバージョンのコマンドを使用するため、パフォーマンスが向上します。

プロパティが False の場合、プロバイダはコンパイル済みバージョンを作成せずに Command オブジェクトを直接実行します。

プロバイダーがコマンドの準備をサポートしていない場合、このプロパティを True に設定するとエラーが返されることがあります。プロバイダーがエラーを返さない場合は、コマンドを準備する要求を単に無視し、Prepared プロパティを False に設定します。

これは基本的に、SQL ステートメントがコンパイルされている (事前に解析され、トークン化され、分析されている) ことを示しています。クエリが複数回使用される場合、このコンパイルされたバージョンは、すべてのステートメントを再コンパイルして他の作業を行うことなく、パラメーター値を置き換えるだけで毎回使用できます。

于 2013-03-14T12:33:13.967 に答える
4

これは、何度も実行される SQL ステートメントを繰り返し実行することに関連する解析とコンパイルのオーバーヘッドを削減するためです。
アプリケーションは、パラメーター セットが異なるたびにステートメントを再構築するのではなく、実行ごとに異なるパラメーター セットを指定することにより、パラメーター化されたステートメントを複数回実行できます。
プリペアド ステートメントの実行

于 2013-03-14T12:32:40.603 に答える