Share via


ODBC カーソル

アプリケーションは、カーソルを使用してデータをフェッチします。 カーソルは結果セットとは異なります。結果セットは特定の検索条件に一致する行のセットですが、カーソルはそれらの行をアプリケーションに返すソフトウェアです。 データベースに適用される名前 カーソル は、コンピューターターミナルの点滅カーソルから発生した可能性があります。 カーソルが画面上の現在の位置を示し、入力した単語が次に表示されるように、結果セット上のカーソルは結果セット内の現在の位置と、次に返される行を示します。

ODBC のカーソル モデルは、埋め込み SQL のカーソル モデルに基づいています。 これらのモデルの主な違いの 1 つは、カーソルを開く方法です。 埋め込み SQL では、カーソルを使用する前に、明示的に宣言して開く必要があります。 ODBC では、結果セットを作成するステートメントが実行されると、カーソルが暗黙的に開かれます。 カーソルが開かれるとき、カーソル位置は結果セットの 1 行目の前に設定されます。 埋め込み SQL と ODBC の両方で、アプリケーションの使用が完了した後でカーソルを閉じる必要があります。

カーソルによって特性が異なります。 順方向専用カーソルと呼ばれる最も一般的な種類のカーソルは、結果セット内でのみ順方向に移動できます。 前の行に戻すには、アプリケーションでカーソルを閉じて再度開き、結果セットの先頭から必要な行に到達するまで行を読み取る必要があります。 順方向専用カーソルは、結果セットを単一のパスにするための高速メカニズムを提供します。

順方向専用カーソルは、ユーザーがデータを前後方向にスクロールする画面ベースのアプリケーションでは、あまり役に立ちません。 このようなアプリケーションでは、結果セットを 1 回読み取り、データをローカルにキャッシュし、自身でスクロールすることで、順方向専用カーソルを使用できます。 ただし、これは少量のデータでのみ適切に機能します。 より優れた解決策は、結果セットへのランダム アクセスを提供するスクロール可能なカーソルを使用することです。 このようなアプリケーションでは、ブロック カーソルと呼ばれるものを使用して、一度に複数の行のデータをフェッチすることで、パフォーマンスを向上させることもできます。ブロック カーソルの詳細については、「ブロック カーソルの使用」を参照してください。

順方向専用カーソルは ODBC のデフォルトのカーソルの種類であり、以降のセクションで説明します。 ブロック カーソルとスクロール可能カーソルの詳細については、「ブロック カーソルスクロール可能カーソル」を参照してください。

重要

SQLEndTran を明示的に呼び出すか、オート コミット モードで操作することによって、トランザクションをコミットまたはロールバックすると、一部のデータ ソースは接続上のすべてのステートメントのすべてのカーソルを閉じます。 詳細については、SQLGetInfo 関数の説明の SQL_CURSOR_COMMIT_BEHAVIOR 属性と SQL_CURSOR_ROLLBACK_BEHAVIOR 属性を参照してください。