文を実行して結果セットを操作する 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 値を比較して、最適の同時制御を使用します。
詳細については、 http://msdn.microsoft.com/en-us/library/ms712631.aspxにある Microsoft の『ODBC API Reference』の「SQLSetStmtAttr」を参照してください。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |