アプリケーションとタスクは両方とも、通常は以下のタスクを実行します。
プログラムをコーディングした後、他のすべての Java プログラムのようにコンパイルします。何らかの特別なプリコンパイルまたはバインド・ステップを実行する必要はありません。
以下のサンプル・プログラム DB2Appl.java は、 DB2 に JDBC プログラムをコーディングする方法を示しています。
import java.sql.*; (1) class DB2Appl { static { try { Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance(); } catch( Exception e ) { System.out.println(e); } } public static void main(String argv[]) { Connection con = null; (2) // URL is jdbc:db2:dbname String url = "jdbc:db2:sample"; (3) try { if (argv.length == 0) { // connect with default id/password con = DriverManager.getConnection(url); } else if (argv.length == 2) { String userid = argv[0]; String passwd = argv[1]; // connect with user-provided username and password con = DriverManager.getConnection(url, userid, passwd); (4) } else { System.out.println("Usage: java DB2Appl [username password]"); System.exit(0); } // retrieve data from the database System.out.println("Retrieve some data from the database..."); Statement stmt = con.createStatement(); (5) ResultSet rs = stmt.executeQuery("SELECT * from employee"); (6) System.out.println("Received results:"); // display the result set // rs.next() returns false when there are no more rows while (rs.next()) { (7) String a = rs.getString(1); (8) String str = rs.getString(2); System.out.print(" empno= " + a); System.out.print(" firstname= " + str); System.out.print(""); } rs.close(); stmt.close(); // update the database System.out.println("Update the database... "); stmt = con.createStatement(); int rowsUpdated = stmt.executeUpdate("UPDATE employee SET firstnme = 'SHILI' where empno = '000010'");(9) System.out.print("Changed "+rowsUpdated); if (1 == rowsUpdated) System.out.println(" row."); else System.out.println(" rows."); stmt.close(); con.close(); } catch( Exception e ) { System.out.println(e); } } }
JDBC アプリケーションの配布は、他のすべての Java アプリケーションの場合と同様に行います。アプリケーションは DB2 サーバーとの通信に DB2 クライアントを使用するため、機密保護についての考慮事項は特にありません。権限に関する検査は DB2 クライアントにより実行されます。
クライアント・マシン上でアプリケーションを実行するには、そのマシンに以下のものをインストールしなければなりません。
アプリケーションを作成するには、ご使用のオペレーティング・システムに JDK もインストールしなければなりません。 Java 環境の設定、DB2 Java アプリケーションの作成、および DB2 Java アプリケーションの実行の詳細については、 アプリケーション構築の手引き を参照してください。
他の Java アプレットと同様に、 JDBC アプレットは、ネットワーク (イントラネットまたはインターネット) を介して配布します。一般的にアプレットは、ハイパーテキスト・マークアップ言語 (HTML) のページに組み込まれます。たとえば、サンプル・アプレット DB2Applt.java (sqllib/samples/java にある) を呼び出すためには、次の <APPLET> タグを使用します。
<applet code="DB2Applt.class" width=325 height=275 archive="db2java.zip"> <param name="server" value="webhost"> <param name="port" value="6789"> </applet>
アプレットを実行するには、クライアント・マシンに Java を使用できる Web ブラウザーだけが必要です。 HTML ページをロードするときには、アプレット・タグは、ご使用のブラウザーが Java アプレットおよび db2java.zip クラス・ライブラリーをダウンロードするように指示します。これには、COM.ibm.db2.jdbc.net クラスによりインプリメントされた DB2 JDBC ドライバーも含まれます。アプレットが DB2 に接続するために JDBC API を呼び出す場合、 JDBC ドライバーは Web サーバーで稼働している JDBC アプレット・サーバーを介して、 DB2 データベースと分割接続します。
注: | Web ブラウザーがサーバーから db2java.zip を確実にダウンロードできるようにするには、クライアント上の CLASSPATH 環境変数に db2java.zip が含まれない ようにします。クライアントが db2java.zip のローカル・バージョンを使用している場合、ご使用のアプレットは正常に機能しない場合があります。 |
Java アプレットの作成および配布の詳細については、 アプリケーション構築の手引き を参照してください。
JDBC 2.0 は、Sun 社の JDBC の最新のバージョンです。このバージョンの JDBC には、 コア API とオプション・パッケージ API の、2 つのパーツが定義されています。 JDBC 仕様の詳細については、 DB2 ユニバーサル・データベース Java Web サイトを参照してください。
ご使用のオペレーティング・システムに応じて JDBC 2.0 ドライバーをインストールする方法について詳しくは、 アプリケーション構築の手引き を参照してください。
DB2 JDBC 2.0 ドライバーは JDBC 2.0 コア API をサポートしますが、仕様で定義されているすべての機能をサポートするわけではありません。 DB2 JDBC 2.0 ドライバーは、以下の JDBC 2.0 コア API 機能をサポートします。
注: | DB2 は、ストアード・プロシージャー、UDF、またはメソッドでの java.sql.Blob または java.sql.Clob はサポートしていません。 |
DB2 JDBC 2.0 ドライバーは、以下の機能はサポートしていません。
DB2 JDBC 2.0 ドライバーは、以下の JDBC 2.0 オプション・パッケージ API 機能をサポートします。
DB2 では、命名データベース用 Java Naming and Directory Interface (JNDI) の以下のサポートが提供されています。
Hashtable env = new Hashtable( 5 ); env.put( "java.naming.factory.initial", "COM.ibm.db2.jndi.DB2InitialContextFactory" ); Context ctx = new InitialContext( env );
DB2ConnectionPoolDataSource および DB2PooledConnection は、ユーザー独自の接続プールをインプリメントするのに必要なフックを提供します。以下のとおりです。
DB2 は、DB2 JDBC アプリケーション・ドライバーを使って Java トランザクション API (JTA) をサポートします。 DB2 は、DB2 JDBC ネット・ドライバーを使った JTA はサポートしません。
この仕様のバージョンは、以前のバージョン (1.22) と下位互換性があります。ただし、DB2 JDBC 1.22 ドライバーは、 LOB タイプを JDBC 1.22 仕様の拡張としてサポートします。この拡張は、新しい仕様の下位互換性には含まれません。つまり、JDBC 1.22 ドライバーの LOB サポートに依存している既存の JDBC アプリケーションは、新しいドライバーでは正常に実行しない可能性があるということです。 LOB およびグラフィック・タイプの DB2 JDBC 1.22 ドライバー・サポートの詳細については、 JDBC 1.22 で LOB およびグラフィカル・オブジェクトを使用するを参照してください。問題を訂正するため、 JDBC 2.0 ドライバーが提供する LOB サポートを利用するようアプリケーションを変更することを検討してください。
注: | ストアード・プロシージャーや UDF の LOB および漢字タイプ用の DB2 JDBC 2.0 ドライバー・サポートは使用できません。ストアード・プロシージャーや UDF の LOB または漢字タイプを使用するには、 JDBC 1.22 ドライバー・サポートを使用する必要があります。 |
ただし、この解決が、すべての状況で実際的だというわけではありません。対処方法として、キーワード JDBCVERSION を "122" に設定すると、 JDBC 2.0 ドライバーが LOB サポートの 1.22 バージョンを使用するように指示できます。省略時値は "200" で、 JDBC 2.0 ドライバーが LOB サポートの 2.0 バージョンを使用するように指示します。このキーワードは db2cli.ini で設定することも、 getConnection 特性引き数に接続属性として設定することもできます。
注: | JDBC 1.22 ドライバーを使用する場合は、 JDBCVERSION キーワードを設定しても JDBC の LOB サポートには影響を与えません。 |