このサンプルは、動的 SQL SELECT 文でのカーソルの使用方法を示しています。これは静的カーソルのサンプルに少し手を加えたものです。静的カーソルのサンプルをまだ見ていない場合は、先にそれを確認すると、このサンプルの理解に役立つでしょう。静的カーソルのサンプルを参照してください。
ソース・コードのある場所とサンプル・プログラムの構築方法については、サンプル Embedded SQL プログラムを参照してください。
dcur プログラムでは、ユーザは n コマンドによって参照したいテーブルを選択できます。プログラムは、そのテーブルの情報を画面に入るかぎり表示します。
起動したら、プロンプトに対して次の形式の接続文字列を入力してください。
UID=DBA;PWD=sql;DBF=samples-dir\demo.db |
Embedded SQL を使用する C プログラムは、samples-dir\SQLAnywhere\C ディレクトリにあります。Windows Mobile の場合、動的カーソルのサンプルが samples-dir\SQLAnywhere\CE\esql_sample ディレクトリにあります。プログラムは、connect、open_cursor、print 関数を除いて、静的カーソルのサンプルとほぼ同じです。
connect 関数は Embedded SQL インタフェース関数の db_string_connect を使用してデータベースに接続します。この関数はデータベース接続に使用する接続文字列をサポートします。
open_cursor ルーチンは、まず SELECT 文を作成します。
SELECT * FROM table-name |
table-name はルーチンに渡されたパラメータです。この文字列を使用して動的 SQL 文を準備します。
Embedded SQL の DESCRIBE 文は、SELECT 文の結果を SQLDA 構造体に設定するために使用されます。
SQLDA のサイズの初期値は 3 になっています。この値が小さすぎる場合、データベース・サーバの返した select リストの実際のサイズを使用して、正しいサイズの SQLDA を割り付けます。
その後、SQLDA 構造体にはクエリの結果を示す文字列を保持するバッファが設定されます。fill_s_sqlda ルーチンは SQLDA のすべてのデータ型を DT_STRING 型に変換し、適切なサイズのバッファを割り付けます。
その後、この文のためのカーソルを宣言して開きます。カーソルを移動して閉じるその他のルーチンは同じです。
fetch ルーチンの場合は多少異なり、ホスト変数のリストの代わりに、SQLDA 構造体に結果を入れます。print ルーチンは大幅に変更され、SQLDA 構造体から結果を取り出して画面の幅一杯まで表示します。print ルーチンは各カラムの見出しを表示するために SQLDA の名前フィールドも使用します。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |