Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー プログラミング » ODBC サポート » ODBC アプリケーションの結果セット

 

ODBC カーソル特性

文を実行して結果セットを操作する ODBC 関数は、カーソルを使用してタスクを実行します。アプリケーションは SQLExecute または SQLExecDirect 関数を実行するたびに、暗黙的にカーソルを開きます。

結果セットを前方にのみ移動し、更新はしないアプリケーションの場合、カーソルの動作は比較的単純です。ODBC アプリケーションは、デフォルトではこの動作を要求します。ODBC は読み込み専用で前方専用のカーソルを定義します。この場合、SQL Anywhere ではパフォーマンスが向上するように最適化されたカーソルが提供されます。

前方専用カーソルの簡単な例については、データの取得を参照してください。

多くのグラフィカルユーザーインターフェイスアプリケーションのように、結果セット内で前後にスクロールする必要のあるアプリケーションの場合、カーソルの動作はもっと複雑です。アプリケーションが、他のアプリケーションによって更新されたローに戻るときの動作を考えてみます。ODBC は、アプリケーションに適した動作を組み込めるように、さまざまな「スクロール可能カーソル」を定義しています。SQL Anywhere には、ODBC のスクロール可能カーソルタイプに適合するカーソルのフルセットが用意されています。

必要な ODBC カーソル特性を設定するには、文の属性を定義する SQLSetStmtAttr 関数を呼び出します。SQLSetStmtAttr は、結果セットを作成する文の実行前に呼び出してください。

SQLSetStmtAttr を使用すると、多数のカーソル特性を設定できます。SQL Anywhere に用意されているカーソルタイプを決定する特性は、次のとおりです。

  • SQL_ATTR_CURSOR_SCROLLABLE   スクロール可能カーソルの場合は SQL_SCROLLABLE、前方専用カーソルの場合は SQL_NONSCROLLABLE に設定します。SQL_NONSCROLLABLE がデフォルトです。

  • SQL_ATTR_CONCURRENCY   次のいずれかの値に設定します。

    • SQL_CONCUR_READ_ONLY   更新禁止になります。SQL_CONCUR_READ_ONLY がデフォルトです。

    • SQL_CONCUR_LOCK   ローを確実に更新できるロックの最下位レベルを使用します。

    • SQL_CONCUR_ROWVER   SQLBase ROWID または Sybase TIMESTAMP などのローバージョンを比較して、最適の同時制御を使用します。

    • SQL_CONCUR_VALUES   値を比較して、最適の同時制御を使用します。

詳細については、[external link] http://msdn.microsoft.com/en-us/library/ms712631.aspxにある Microsoft の『ODBC API Reference』の「SQLSetStmtAttr」を参照してください。

 例