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 サーバー プログラミング » Embedded SQL » サンプル Embedded SQL プログラム

 

動的カーソルのサンプル

このサンプルは、動的 SQL SELECT 文でのカーソルの使用方法を示しています。これは静的カーソルのサンプルに少し手を加えたものです。静的カーソルのサンプルをまだ見ていない場合は、先にそれを確認すると、このサンプルの理解に役立つでしょう。

dcur プログラムでは、ユーザーは N コマンドによって参照したいテーブルを選択できます。プログラムは、そのテーブルの情報を画面に入るかぎり表示します。

起動したら、プロンプトに対して次の接続文字列を入力してください。次はその例です。

UID=DBA;PWD=sql;DBF=demo.db

Embedded SQL を使用する C プログラムは、%SQLANYSAMP12%\SQLAnywhere\C ディレクトリにあります。Windows Mobile の場合は、動的カーソルのサンプルが \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 の名前フィールドも使用します。

 参照