CHAPTER 4: Empress ODBC 3.5 クライアント



4.1 はじめに

Empress ODBC 3.5 クライアントは (PC Windows プラットフォームではダイナミックリンクライブラリ) Empress コネクティビティ(ODBC) サーバー側と ユーザーアプリケーション側の相互作用をするための ODBC 関数コールを実装したライブラリです。 Empress コネクティビティ(ODBC) サーバーは Empress ODBC からEmpress ODBC ダイナミック SQL モジュール (Empress RDBMS のEmpress データベースエンジン)へ リクエストを渡します。 ダイナミック SQL モジュールはそのリクエストを処理し、結果を返します。

Empress ODBC ドライバと Empress ローカル アクセス ドライバは マイクロソフト ODBC 3.0 プログラマーズ リファレンス および SDK ガイド に従ったマイクロソフトODBC 3.5 クライアントです。

Empress ODBC クライアントはマルチスレッドクライアントですが、 それはSQLステートメントを処理するのではなく ODBC 呼び出しを処理することを意味する マルチスレッドクライアントです。 クライアントは SQL ステートメントを処理するために Empress コネクティビティ (ODBC)サーバーへ渡します。 ODBC 標準は、2つの適合範囲を定義します: ODBC API 準拠レベル およびODBC SQL準拠レベルで、 Empress ODBC クライアントは以下に応じます。

SQL文法準拠レベルとAPI準拠レベルについてのより詳細な情報は マイクロソフト ODBC 3.0 プログラマーズ リファレンス および SDK ガイド を参照してください。



4.2 ODBC コアレベル API 関数

Empress ODBC クライアントがサポートするODBC コアレベル ODBC API 関数を 以下に示します。

表 4-1: ODBC コアレベル ODBC API 関数

関数名  説明
  
SQLAllocHandle odbc ハンドルの取得
SQLBindCol 結果カラムのための領域の割り当てとデータ・タイプの指定
SQLBindParameter SQL ステートメント内のパラメータの関連付け(バインド)
SQLCancel SQL ステートメントのキャンセル
SQLCloseCursor オープンされているステートメントおよび 途中の結果を廃棄するためのカーソルのクローズ
SQLColAttribute 結果のセットのカラム属性を返す
SQLColumns 指定されたテーブル中のカラム名のリストを返す
SQLConnect データソース名、ユーザーID、パスワードにより 指定されたドライバに接続する
SQLCopyDesc あるディスクリプタ・ハンドルから別のハンドルディスクリプタ情報をコピーする
SQLDescribeCol 結果セットのカラム属性を返す
SQLDisconnect コネクションの切断
SQLDriverConnect SQLConnect の拡張
SQLEndTran 接続に関連したすべてのステートメントに対する 有効なオペレーションに対しコミットまたはロールバックの オペレーションを要求する
SQLExecDirect ステートメントの実行
SQLExecute 準備したステートメントの実行
SQLFetch 結果の1行を返す
SQLFetchScroll 指定した行セットのデータを結果セットから取り出し、すべてのバインドされたカラム のデータを戻す
SQLFreeHandle 特定の環境、接続、ステートメント、または記述子の各ハンドルに関連する リソースを解放する
SQLFreeStmt 特定のステートメントに関連した停止処理、 ステートメントに関連した開いているカーソルを閉じ、 また途中の結果を廃棄する。 ステートメント・ハンドルに関連したリソースをすべて解放
SQLGetConnectAttr 接続属性の現在のセッティングを返す。
SQLGetCursorName ステートメント・ハンドルに関連したカーソル名を返す
SQLGetData 結果セット中の1つのカラムのデータを取得する
SQLGetDescField 記述子レコードの単一フィールドの現在の設定および値を返す
SQLGetDescRec 記述子レコードの複数フィールドの現在の設定および値を返す
SQLGetDiagField エラー、警告、およびステイタス情報が含まれている 診断のデータ構造(特定のハンドルと関連付けられた)レコード フィールドの現在の値を返す
SQLGetDiagRec エラー、警告、およびステイタス情報が含まれている 診断のレコードの複数のフィードの現在の値を返す
SQLGetEnvAttr 現在の設定されている環境属性を返す
SQLGetInfo 一般的なドライバに関する情報および接続に関連したデータソース情報を返す
SQLGetStmtAttr ステートメント属性の現在の設定値を返す
SQLGetTypeInfo データソースによってサポートされているデータタイプに関する情報を返す
SQLNativeSql ドライバによって修正されたSQL を返す
SQLNumParams SQL ステートメント内のパラメーター数を返す
SQLNumResultCols 結果セット内のカラム数を返す
SQLParamData 長いデータを分割して送るために SQLPutData() と組み合わせて使用する
SQLPrepare 後に実行するためのSQLステートメントの準備
SQLPutData アプリケーションがステートメント実行時にドライバへ パラメーターまたはカラムのためにデータを送ることを可能にする
SQLRowCount insert、update またはdelete リクエストに影響を受けた表中の行数を返す
SQLSetConnectAttr 接続の各局面を管理する属性の設定
SQLSetCursorName カーソル名の設定
SQLSetDescField 記述子レコードの単一フィールドの値の設定
SQLSetDescRec カラムまたはパラメーター・データにバインドされているデータ・タイプと バッファに影響を与える複数の記述子フィールドの設定
SQLSetEnvAttr 環境の各局面を管理する属性の設定
SQLSetStmtAttr ステートメントに関連した属性の設定
SQLSpecialColumn 特定のテーブル内のカラムについての以下の情報を取得する
  1. テーブル中のユニークな行を識別するカラムの最適なセット。
  2. カラムの中のどのような値もトランザクションによって更新される 場合、自動的に更新されるカラム。
SQLStatictics テーブルに関連した単一のテーブルおよびインデックスに関する統計のリストを 取得する。
SQLTables 特定のデータソースに管理されているテーブルリスト、カタログ、スキーマ名、 テーブルタイプを返す。



4.3 ODBC レベル 1 ODBC API 関数

Empress ODBC クライアントがサポートするODBC レベル 1 ODBC API 関数を 以下に示します。

表 4-2: ODBC レベル 1 ODBC API 関数

関数名 説明
   
SQLBrowseConnect 接続属性および有効な属性値の連続したレベルを返す  値が各接続属性のために指定された場合、データソースに接続する
SQLBulkOperation バルクの登録を実行する
SQLMoreResults より多くの結果が、SELECT、UPDATE、INSERTあるいはDELETEステートメントが含まれる ステートメントが利用可能かどうかを決め、そうであるならば、 それらの結果のための処理を初期化する
SQLPrimaryKeys テーブルの主キーを構成する列名を返す
SQLProcedureColumns Returns the information about optimal set of columns that uniquely identifies a row in a specified table.
SQLProcedures 特定のデータソースに管理されているプロシージャーのリストを返す
SQLSetPos 行セットでカーソル位置を設定する。 アプリケーションは 行セットの中でカーソル位置をセットし、 アプリケーションが行セットの中のデータをリフレッシュするか あるいは結果セット中のデータを更新するか、削除することを 可能にする



4.4 ODBC レベル 2 ODBC API 関数

Empress ODBC クライアントがサポートするODBC レベル 2 ODBC API 関数を 以下に示します。

表 4-3: ODBC レベル 2 ODBC API 関数

関数名 説明
   
SQLColumnPrivileges 特定のテーブルの権限に関連したカラムのリストを返す
SQLDescribeParam 準備されたSQLステートメントに関連したパラメーター・マーカーの詳細を返す
SQLForeignKeys 特定のテーブルの 主キーに関連付けられた他のテーブルの外部キーのリスト および 外部キーのリストを返す
SQLTablePrivileges 各テーブルに関する権限とテーブルリストを返す



4.5 同期処理

Empress ODBCドライバは、デフォルトでは ODBC 呼び出しを同期実行します。 同期実行とは呼び出しが完了するまで、ドライバはアプリケーションに制御を 戻さないことを意味します。 この場合において、コネクティビティ(ODBC)サーバーに対し、 時間のかかるタスクを実行させることは、クライアントアプリケーションが 長い時間アイドル状態で待たされることになります。 非同期処理モードは、Empress ODBC ドライバ のODBC 呼び出し アプリケーションにSQL_STILL_EXECUTING 戻り値がすぐに戻ることが できるモードです。

Empress ODBCドライバは非同期実行接続をサポートします。 与えられた接続ハンドルに関連したステートメント ハンドルは すべて非同期モードか、あるいはすべて同時モードとなります。 同じ接続中の他のステートメント ハンドルが同期モードである間は、 接続中のステートメント ハンドルは非同期モードでありえなく、 その逆も正しいことになります。



4.6 マルチスレッドでの動作

データベース アプリケーションの並列処理をおこなうために、 Empress ODBC ドライバ および Empress ODBC ローカル アクセス ドライバ はスレッド中で使用することができます。 その場合、多数の接続の開始、および各スレッドとそれらの接続を関連させることに より、同時にSQLオペレーション(例えば異なるスレッドからの同時にクエリを発行する)を発行したほうがよいことになります。