アプリケーション構築の手引き

DB2 プログラミング・インターフェース

DB2 データベースを管理またはアクセスする際に、 さまざまなプログラミング・インターフェースを使用することができます。 以下を行うことができます。

  1. データベースのバックアップおよび復元などの管理機能を実行する場合は、 DB2 API を使用します。
  2. アプリケーションに静的および動的 SQL を組み込む。
  3. アプリケーションで DB2 コール・レベル・インターフェース (DB2 CLI) 関数をコーディングして、 動的 SQL ステートメントを呼び出す。
  4. Java データベース・コネクティビティー・アプリケーション・プログラミング・インターフェース (JDBC API) を呼び出す、 Java アプリケーションおよびアプレットを開発する。
  5. Data Access Object (DAO) および Remote Data Object (RDO) 仕様に準拠した Microsoft Visual Basic と Visual C++、 およびオブジェクトのリンクと埋め込みデータベース (OLE DB) Bridge を使用する ActiveX Data Object (ADO) アプリケーションを開発する。
  6. IBM のツール、または Net.Data、Excel、Perl などの他社のツール、 および Lotus Approach などのオープン・データベース・コネクティビィティー (ODBC) エンド・ユーザー・ツールと、 そのプログラム言語である Lotus Script を使用して、 アプリケーションを開発する。

アプリケーションが DB2 データベースにアクセスする方法は、 開発するアプリケーションのタイプによって異なります。 たとえば、データ入力アプリケーションの場合、 アプリケーションに静的 SQL ステートメントを組み込むことができます。 ワールド・ワイド・ウェブ (WWW) を介して照会を実行するアプリケーションの場合、 Net.Data、Perl、または Java を選択できます。

組み込み SQL の使用

構造化照会言語 (SQL) は、 DB2 データベース内のデータへのアクセスおよび操作に使用するデータベース・インターフェース言語です。 アプリケーションに SQL ステートメントを組み込めば、 そのアプリケーションで、 SQL がサポートしている作業 (データの検索または保管など) を行うことができます。 DB2 を使用して、 C/C++、COBOL、FORTRAN、Java (SQLJ)、および REXX プログラム言語で、 組み込み SQL アプリケーションをコーディングすることができます。

SQL ステートメントの組み込み先のアプリケーションをホスト・プログラムと呼びます。 ホスト・プログラムの作成に使用するプログラム言語をホスト言語と呼びます。 このようにプログラムおよび言語を定義するのは、 それらが SQL ステートメントに対してホストの役割を果たす、 つまりそれらの機能を提供しているためです。

静的 SQL ステートメントの場合、 コンパイルを行う前に、 ステートメント・タイプおよび表名と列名が決まっています。 ただし、 ステートメントが検索または更新を行う特定のデータ値は決められていません。 それらの値は、 ホスト言語変数で指定することができます。 静的 SQL ステートメントのプリコンパイル、コンパイル、およびバインドは、 アプリケーションを実行する前に行います。 静的 SQL は、大幅な変更を行わないデータベースで実行するのに適しています。 それ以外の場合、静的ステートメントは、 すぐに最新の情報に則したものではなくなってしまいます。

対照的に、 動的 SQL ステートメントとは、 実行時にアプリケーションが作成し、実行するステートメントです。 エンド・ユーザーに対して SQL ステートメントの重要な部分 (検索する表および列の名前など) を求める対話式アプリケーションが、 動的 SQL のよい例です。 動的 SQL ステートメントはアプリケーションの実行中に作成され、 それからステートメントの処理が実行依頼されます。

静的 SQL ステートメントか動的 SQL ステートメント、 あるいはその両方を組み込んで、 アプリケーションを作成することができます。

一般的に、静的 SQL ステートメントは、 トランザクションが事前定義されている高性能のアプリケーションに向いています。 予約システムなどが、そのようなアプリケーションのよい例です。

一般的に、 動的 SQL ステートメントは、 実行時にトランザクションを指定する必要がある、 頻繁に変更が行われるデータベースに対して実行するアプリケーションに向いています。 対話式照会インターフェースなどが、そのようなアプリケーションのよい例です。

アプリケーションに SQL ステートメントを組み込む場合、 以下のステップに従って、プリコンパイルを行い、 アプリケーションをデータベースにバインドしなければなりません。

  1. SQL ステートメントを組み込んだプログラムを含むソース・ファイルを作成する。
  2. データベースに接続してから、各ソース・ファイルをプリコンパイルする。

    各ソース・ファイル内の SQL ステートメントを、 データベース・マネージャーへの DB2 実行時 API 呼び出しに変換します。 また、プリコンパイラーはデータベース内にアクセス・パッケージを作成します。 また、バインド・ファイルを作成するように指定すれば、 任意選択でバインド・ファイルの作成も行います。

    アクセス・パッケージには、 アプリケーション内の静的 SQL ステートメント用に、 DB2 最適化プログラムが選択したアクセス・プランが含まれています。 アクセス・プランには、 最適化プログラムが決定した最も有効な方法で、 データベース・マネージャーが静的 SQL ステートメントを実行するのに必要な情報が含まれています。 動的 SQL ステートメントの場合、 アプリケーションの実行時に、最適化プログラムがアクセス・プランを作成します。

    バインド・ファイルには、 アクセス・パッケージを作成するのに必要な、 SQL ステートメントと他のデータが含まれています。 このバインド・ファイルを使用して、 後からアプリケーションを再バインドすることができます。 その際に最初にプリコンパイルをする必要はありません。 再バインドにより、 現在のデータベースの状態に合わせて最適化されたアクセス・プランが作成されます。 アプリケーションのプリコンパイルを行ったデータベースとは別のデータベースへアクセスする場合、 そのアプリケーションを再バインドする必要があります。 最後のバインド以降にデータベース統計を変更した場合、 アプリケーションを再バインドするようお勧めします。

  3. ホスト言語コンパイラーを使用して、 変更したソース・ファイル (および SQL ステートメントを含まない他のファイル) をコンパイルする。
  4. オブジェクト・ファイルを DB2 およびホスト言語ライブラリーとリンクさせ、 実行可能プログラムを作成する。
  5. バインド・ファイルをバインドし、 アクセス・パッケージを作成する (プリコンパイル時に行っていなかった場合、 あるいは別のデータベースにアクセスする場合)。
  6. アプリケーションを実行する。 アプリケーションが、 パッケージ内のアクセス・プランを使用してデータベースにアクセスします。

Java Embedded SQL (SQLJ)

DB2 Java Embedded SQL (SQLJ) サポートは、 DB2 AD クライアントによって提供されます。 DB2 SQLJ サポートと DB2 JDBC サポートによって、 SQLJ アプレット、アプリケーション、およびストアード・プロシージャーを構築し、 実行できます。 これらには、静的 SQL が含まれ、 DB2 データベースにバインドされた組み込み SQL ステートメントを使用します。

DB2 SQLJ サポートの詳細については、 以下のアドレスの Web ページを参照してください。

  

http://www.ibm.com/software/data/db2/java

DB2 コール・レベル・インターフェースの使用

DB2 CLI は、 C および C++ アプリケーションが DB2 データベースにアクセスする際に使用できるプログラミング・インターフェースです。 DB2 CLI は、 Microsoft オープン・データベース・コネクティビィティー (ODBC) 仕様と、 ISO CLI 規格に基づいています。 DB2 CLI は業界標準に基づいているため、 それらのデータベース・インターフェースにすでに精通しているアプリケーション・プログラマーであれば、 より短期間で習熟することができます。

DB2 CLI を使用する場合、 アプリケーションは動的 SQL ステートメントを関数の引き数としてデータベース・マネージャーに渡し、 処理します。 そのようにして、 DB2 CLI は組み込み動的 SQL の代替としての役割を果たします。

CLI、ODBC、または JDBC アプリケーション内で静的 SQL として SQL ステートメントを実行することもできます。 CLI/ODBC/JDBC 静的プロファイル作成機能により、 アプリケーションのエンド・ユーザーは、多くの場合に、 動的 SQL の代わりに静的 SQL を使用することができるようになります。 詳細については、以下を参照してください。

   http://www.ibm.com/software/data/db2/udb/staticcli 

ODBC ドライバー・マネージャーを使用せずに、 単に、UNIX 上の libdb2 および OS/2 や Windows 32 ビット・オペレーティング・システム上の db2cli.lib とアプリケーションをリンクすることによっていずれかのプラットフォーム上で DB2 の ODBC ドライバーを使用して、 ODBC アプリケーションを構築することができます。 DB2 CLI サンプル・プログラムは、ODBC アプリケーションの構築方法を例示しています。 DB2 CLI サンプル・プログラムは、 UNIX 上の sqllib/samples/cli および OS/2 や Windows 32 ビット・オペレーティング・システム上の %DB2PATH%\samples\cli にあります。

DB2 CLI アプリケーションは DB2 とともに提供されている共通アクセス・ パッケージを使用するため、 DB2 CLI アプリケーションのプリコンパイルまたはバインドを行う必要はありません。 必要なのは、アプリケーションのコンパイルとリンクだけです。

ただし、 DB2 AD クライアントに付属している DB2 CLI バインド・ファイルを、 アクセスする DB2 データベースごとにバインドしてからでなければ、 DB2 CLI または ODBC アプリケーションは DB2 データベースにアクセスできません。 これはデータベースへの最初の接続の際に自動的に行われますが、 データベース管理者が、各プラットフォームごとに、 DB2 データベースにアクセスするそれぞれのクライアントからバインド・ファイルをバインドするようお勧めします。 バインドに関する指示については、 "バインド"を参照してください。

たとえば、OS/2、AIX、および Windows 95 クライアントがあり、 それぞれが 2 つの DB2 データベースにアクセスするとします。 管理者は、アクセスするデータベースごとに、 1 つの OS/2 クライアントからバインド・ファイルをバインドしなければなりません。 次に、 管理者は、アクセスするデータベースごとに、 1 つの AIX クライアントからバインド・ファイルをバインドします。 最後に、管理者は Windows 95 クライアントで同様の作業を行います。

DB2 CLI と組み込み動的 SQL の比較

動的アプリケーションを開発する際に、 組み込み動的 SQL か DB2 CLI のいずれかを使用できます。 どちらの場合でも、 SQL ステートメントは実行時に準備され、処理されます。 各方式には、 以下にリストしているように、 それぞれに固有の利点があります。

DB2 CLI の利点

移行性
DB2 CLI アプリケーションはデータベースに SQL ステートメントを渡す際に、 関数の標準セットを使用します。 DB2 CLI アプリケーションを実行する前に必要なのは、 コンパイルとリンクだけです。 対照的に、 組み込み SQL アプリケーションは、プリコンパイルしてからコンパイルし、 その後それらのアプリケーションをデータベースにバインドしてからでなければ実行できません。 この処理により、 アプリケーションを特定のデータベースに効果的に結び付けます。

バインドを行わない
DB2 CLI アプリケーションは、 アクセスするデータベースごとに個別にバインドする必要がありません。 必要なのは、 すべての DB2 CLI アプリケーションに使用できる、 DB2 CLI に付属しているバインド・ファイルをバインドすることだけです。 これにより、 アプリケーションの管理に費やされる時間が大幅に減ります。

取り出しおよび入力の拡張
DB2 CLI 関数を使用すれば、 一度の呼び出しで、 データベース内の複数の行を 1 つの配列に取り出すことができます。 また、入力変数の配列を使用して、 SQL ステートメントを何回も実行できます。

カタログに対する整合性インターフェース
データベース・システムには、 データベースとそのユーザーに関する情報が入っているカタログ表が含まれています。 これらのカタログの形式は、 システム間で異なる場合があります。 DB2 CLI は、 表、列、外部キー、基本キー、およびユーザー特権などの、 構成要素に関するカタログ情報を照会する整合性インターフェースを提供します。 これにより、 データベース・サーバーのリリース間でのカタログの変更、 およびデータベース・サーバー間での相違からアプリケーションが保護されます。 特定のサーバーまたは製品のバージョンに固有のカタログ照会を作成する必要はありません。

データ変換の拡張
DB2 CLI は、 SQL と C のデータ・タイプ間で自動的にデータを変換します。 たとえば、 SQL データ・タイプを C 文字データ・タイプに取り出すと、 文字ストリング表示に変換されます。 そのため、 DB2 CLI は対話式照会アプリケーションに適しています。

グローバル・データ域がない
一般に、組み込み SQL アプリケーションには、 アプリケーションが制御するグローバル・データ域 (SQLDA および SQLCA など) が関連付けられており、 それらはしばしば複雑になることがあります。しかし、DB2 CLI にはグローバル・データ域が必要ではありません。 その代わりに、 DB2 CLI が、必要なデータ構造を自動的に割り当てて制御し、 それらを参照するためのアプリケーションのハンドルを提供します。

ストアード・プロシージャーからの結果セットの取り出し
DB2 CLI アプリケーションは、 サーバー上にあるストアード・プロシージャーから生成された複数の行および結果セットを取り出します。

スクロール可能カーソル
DB2 CLI は、サーバー側のスクロール可能カーソルをサポートしています。 これは、配列出力と併用することができます。 これは、 スクロール・ボックス (Page Up、Page Down、Home、および End キーを使用する) 内のデータベース情報を表示する GUI アプリケーションで役に立ちます。 カーソルをスクロール可能と宣言すれば、 1 行または複数行ごとに結果セット内を下方または上方に移動できます。 また、現在の行からの相対位置や、 結果セットの最初または最後からの相対位置、 あるいはブックマークが既に付けられている特定の行からの相対位置を指定して、 行を取り出すこともできます。

組み込み動的 SQL の利点

すべての DB2 CLI ユーザーは、同じ権限を共有します。 組み込み SQL の利点は、 パッケージ用の特定のユーザーに実行権限を付与することによってさらにきめ細かなセキュリティーを提供することです。

組み込み SQL は、C および C++ 以外の言語もサポートしています。 アプリケーションを別の言語でコーディングする場合、 この点が利点と言えるかもしれません。

動的 SQL は一般に静的 SQL よりも整合性があります。 すでに静的 SQL のプログラミング方法を知っている場合、 動的 SQL に移行する方が DB2 CLI に移行するよりも簡単です。

Java データベース・コネクティビティー (JDBC) の使用

DB2 の Java サポートには JDBC が含まれます。 JDBC はベンダーに依存しない動的 SQL インターフェースで、 標準化された Java メソッドを使用した、 アプリケーションへのデータ・アクセスを提供します。 JDBC は、 JDBC プログラムのプリコンパイルまたはバインドを必要としないという点で、 DB2 CLI と類似しています。 ベンダーに依存しない規格であるため、 JDBC アプリケーションは移行が容易です。 JDBC を使用して作成されたアプリケーションは、 動的 SQL だけを使用します。

JDBC は、 インターネットを介して DB2 データベースにアクセスする場合に特に便利です。 Java プログラム言語を使用して、 ネットワーク接続を使ってリモート DB2 データベース内のデータにアクセスしたり、 操作したりする JDBC アプリケーションおよびアプレットを開発できます。 また、 サーバー上に常駐し、データベース・サーバーにアクセスしたり、 ストアード・プロシージャーを呼び出したリモート・クライアント・アプリケーションに情報を戻す、 JDBC ストアード・プロシージャーを作成することもできます。

JDBC API (CLI/ODBC API と類似している) は、 Java コードからデータベースにアクセスする標準的な方法を提供しています。 Java コードは、関数の引き数として SQL ステートメントを DB2 JDBC ドライバーに渡します。 ドライバーはクライアントの Java コードから JDBC API 呼び出しを処理します。

Java は移行性が高いため、 DB2 アクセスを複数のプラットフォーム上のクライアントに渡すことができます。 しかも、その際に必要なのは Java 対応 Web ブラウザーだけです。

Java アプリケーションでは、 DB2 に接続するために DB2 クライアントが必要です。 他のアプリケーションと同様に、 デスクトップまたはコマンド行からアプリケーションを開始します。 DB2 JDBC ドライバーは、アプリケーションからの JDBC API 呼び出しを処理し、 クライアント接続を使用して要求をサーバーに通信し、その結果を受け取ります。

Java アプレットでは DB2 クライアント接続は必要ありません。 通常、アプレットはハイパーテキスト・マークアップ言語 (HTML) の Web ページに組み込みます。

アプレットを実行する際に必要なのは、 クライアント・マシンで Java 対応ブラウザーまたはアプレット・ビューアーを使えるようにすることだけです。 HTML ページをロードすると、 ブラウザーが Java アプレットをユーザーのマシンにダウンロードし、 さらに Java クラス・ファイルおよび DB2 の JDBC ドライバーもダウンロードします。 アプレットが DB2 に接続するために JDBC API を呼び出すと、 JDBC ドライバーは、Web サーバーにある JDBC アプレット・サーバーを介して、 DB2 データベースとの個別のネットワーク接続を確立します。

DB2 JDBC サポートの詳細については、 以下のアドレスの Web ページを参照してください。

  

http://www.ibm.com/software/data/db2/java
  

DB2 API の使用

アプリケーションでいくつかのデータベース管理作業 (データベースの作成、 活動化、バックアップ、または復元など) を実行しなければならない場合があります。 DB2 にはたくさんの API があるため、 ご使用のアプリケーション (組み込み SQL および DB2 CLI アプリケーションを含む) から、 これらの作業を実行できます。 これにより、 "DB2 ユニバーサル・データベース・ツール"で説明されている、 DB2 サーバー管理ツールを使用して実行できるのと同じ管理機能を、 アプリケーションにプログラミングすることができます。

さらに、 DB2 API を使用してしか実行できない特定の作業を行わなければならない場合があります。 たとえば、 エラー・メッセージのテキストを取り出し、 アプリケーションがエンド・ユーザーに対してそのテキストを表示できるようにしたい場合もあるかもしれません。 メッセージを取り出すには、 「Get Error Message (エラー・メッセージの入手)」という API を使用しなければなりません。

ActiveX Data Objects (ADO) および Remote Data Objects (RDO) の使用

Data Access Object (DAO) および Remote Data Object (RDO) 仕様に準拠した、 Microsoft Visual Basic および Visual C++ データベース・アプリケーションを開発することができます。 さらに、 DB2 では ODBC Bridge に Microsoft OLE DB を使用する ActiveX Data Object (ADO) アプリケーションもサポートしています。

ActiveX Data Object (ADO) を使用すれば、 OLE DB Provider を使用して、 データベース・サーバー内のデータにアクセスしたり、操作したりするアプリケーションを作成できます。 ADO の主要な利点は、 開発速度が速く、使用が容易で、 ディスク・フットプリントが小さいことです。

Remote Data Objects (RDO) は、 ODBC を介してリモート・データ・ソースにアクセスするための情報モデルを提供します。 RDO が提供するオブジェクトのセットを使用すれば、 データベースへの接続、照会の実行、 ストアード・プロシージャーの実行、結果の操作、 変更のサーバーへのコミットが容易になります。 これは、リモート ODBC リレーショナル・データ・ソースへアクセスするために特別に設計されたものであり、 複雑なアプリケーション・コードを使用せずに ODBC を使用することが容易になっています。

IBM、他社、および ODBC のエンド・ユーザー・ツールの使用

データベースの照会などの基本作業を行う場合、 Net.Data または Perl を使用できます。

Net.Data を使用することにより、 Web アプリケーションを介して、 DB2 データへのインターネットおよびイントラネット・アクセスを行うことができます。 これは、 共通ゲートウェイ・インターフェース (CGI) アプリケーションよりも高いパフォーマンスを提供する、 Web サーバー・インターフェース (API) を活用します。 Net.Data は、 Java、REXX、Perl、および C++ などの言語を使用したサーバー側での処理の他に、 クライアント側の処理もサポートしています。 Net.Data は条件付きの論理および豊富なマクロ言語を提供しています。 Net.Data の Web ページは以下のアドレスにあります。

   

http://www.ibm.com/software/data/net.data/

DB2 は、 DBD::DB2 ドライバーを介したデータ・アクセスに使用する、 Perl データベース・インターフェース (DBI) 仕様をサポートしています。 DB2 ユニバーサル・データベース Perl DBI の Web サイトは、 以下のアドレスにあります。

   

http://www.ibm.com/software/data/db2/perl/

このサイトで、 最新の DBD::DB2 ドライバーと関連情報を入手できます。

また、Lotus Approach、Microsoft Access、 および Microsoft Visual Basic などの、 ODBC エンド・ユーザー・ツールを使用して、 これらの作業を行うアプリケーションを作成できます。 ODBC ツールを使用すれば、 高水準プログラム言語を使用する場合よりも簡単にアプリケーションを開発できます。

Lotus Approach には、DB2 データにアクセスする方法が 2 つあります。 1 つ目は、 グラフィカル・インターフェースを使用して、 照会の実行、レポートの作成、およびデータの分析を行う方法です。 もう 1 つは、 LotusScript を使用してアプリケーションを開発する方法です。 LotusScript は完全仕様の、オブジェクト指向プログラム言語で、 多岐にわたるオブジェクト、イベント、メソッド、およびプロパティーを備えており、 プログラム・エディターが組み込まれています。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]