このサンプルは、動的 SQL SELECT 文でのカーソルの使用方法を示しています。
動的カーソルのサンプルプログラム (dcur) では、ユーザは N コマンドによって参照したいテーブルを選択できます。プログラムは、そのテーブルの情報を画面に入るかぎり表示します。
起動したら、プロンプトに対して次の接続文字列を入力してください。次はその例です。
UID=DBA;PWD=sql;DBF=demo.db |
Embedded SQL を使用する C プログラムは、%SQLANYSAMP16%\SQLAnywhere\C ディレクトリにあります。Windows Mobile の場合は、動的カーソルのサンプルが \SQLAnywhere\CE\esql_sample ディレクトリにあります。
dcur プログラムは 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 の名前フィールドも使用します。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |