J2EE アプリケーション・クライアントからデータベースに直接アクセスするには、
クライアント・デプロイメント記述子内に構成されたリソース参照から、
javax.sql.DataSource オブジェクトを検索します。
このリソース参照は、クライアント・アプリケーションのデプロイメント記述子の一部として構成され、
前もって構成されたデータ・ソース・オブジェクトへの参照を表します。
このタスクについて
アプリケーション・クライアントからデータにアクセスする際には、
クライアント・サイドから JDBC Driver 接続機能を直接使用するということに注意してください。
これは、アプリケーション・サーバー・ランタイムで使用可能な追加のプーリング・サポートを利用しません。
このため、クライアント・アプリケーションは、
サーバー・サイドで実行するエンタープライズ Bean を使用してデータにアクセスする必要があります。
これにより、このエンタープライズ Bean は接続を再利用することができ、
製品のランタイムによって提供される別の追加機能を利用できます。
プロシージャー
- 以下のようにして、該当する JDBC API およびネーミング・パッケージをインポートします。
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
- 以下のようにして、初期ネーミング・コンテキストを作成します。
InitialContext ctx = new InitialContext();
- InitialContext オブジェクトを使用してリソース参照からデータ・ソース・オブジェクトを検索します。
javax.sql.DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/myDS");
//where jdbc/myDS is the name of the resource reference
- データ・ソースから java.sql.Connection を取得します。
- 接続にユーザー ID およびパスワードが必要でない場合、
あるいは、今後のステップで、
アプリケーション・クライアント・リソース構成ツール (ACRCT) でデータ・ソースを作成する際に指定される defaultUser および defaultPassword を使用する場合は、以下の方法を使用します。
java.sql.Connection conn = ds.getConnection();
- 一方、接続に特定のユーザー ID およびパスワードを使用する必要がある場合は、次のように指定します。
java.sql.Connection conn = ds.getConnection("user", "password");
//where user and password are the user id and password for the connection
- インターフェース java.sql.Statement、java.sql.PreparedStatement、
または java.sql.CallableStatement を必要に応じて使用してデータベース照会を実行します。
Statement stmt = conn.createStatement();
String query = "Select FirstNme from " + owner.toUpperCase() + ".Employee where LASTNAME = '" + searchName + "'";
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) { firstNameList.addElement(rs.getString(1));
}
- 直前のステップで使用したデータベース・オブジェクト (ResultSet、
Statement、PreparedStatement、または CallableStatement オブジェクトなど) をクローズします。
- 接続をクローズします。 接続のクローズは、
データベース操作を前後に挟んで記述される try...catch ステートメントの finally ブロックで行うのが理想的です。
これを行うことで、例外が発生した場合でも、接続は確実にクローズされます。
conn.close();