データソースによる接続で Connection / Statement /ResultSet を使用している場合、それぞれの close 処理を filnally ブロックで全て行うことが JNDI Datasource HOW-TO では例として示されています。
Javadoc によると ResultSet は Statement を閉じたり再実行したときなどに自動的に close されると書いてあります。人によっては ResultSet の close 処理を記述しない人もいるようです。私も冗長に思うので省略しています。ただし Statement は使い終わったらすぐに閉じるようにしています。
____
<サンプル>
下記の例では rs の close を記述していません。
Connection con = null;
PreparedStatement pst = null;
try {
Context ctx = new InitialContext();
DataSource ds =
(DataSource)ctx.lookup("java:comp/env/jdbc/sample");
con = ds.getConnection();
pst = con.prepareStatement("select * from mytable where name=?");
pst.setString(1, req.getParemeter("name"));
ResultSet rs = pst.executeQuery();
if (rs.next()) {
pst = con.prepareStatement("....");
pst.setString(...);
pst.executeUpdate();
}
} catch (NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (pst != null) {pst.close();}
if (con != null) {con.close();}
} catch (SQLException e) {
e.printStackTrace();
}
}
______
OCWCD (OJC-WC) とりたいな~!
Java の資格 OJC-WC(SJC-WC)
2007年11月19日月曜日
2007年11月18日日曜日
PreparedStatement
データベースへ接続して書き込みなどを行う際、SQL 命令文 「’」「”」などはエスケープ処理をする必要があります。
例えば下記のようなエスケープメソッドを定義して利用することができます。
public static String escape(String s) {
StringBuilder str = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
switch (s.charAt(i)) {
case '\'' :
str.append("\\\'");
break;
case '"' :
str.append("\\\"");
break;
case '\\' :
str.append("\\\\");
break;
default :
str.append(s.charAt(i));
break;
}
}
return str.toString();
}
______
しかし、PreparedStatement の setString メソッドを使うとセットする文字列を自動でエスケープしてくれるのでエスケープメソッドは必要なくなります。
PreparedStatement には setString だけでなく setInt, setLong などのメソッドもあります。
PreparedStatement pst = con.prepareStatement("select*from mytable where title=?");
pst.setString(1, req.getParameter("title"));
などのように利用するだけで req.getParameter("title") に SQL 命令文に影響を与える文字があってもエスケープしてくれます。
また、ステートメントを用意した後は setString メソッドなどを使ってパラメータを変えるだけで次のSQL 文を作成できるので高速に動作します。
例えば下記のようなエスケープメソッドを定義して利用することができます。
public static String escape(String s) {
StringBuilder str = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
switch (s.charAt(i)) {
case '\'' :
str.append("\\\'");
break;
case '"' :
str.append("\\\"");
break;
case '\\' :
str.append("\\\\");
break;
default :
str.append(s.charAt(i));
break;
}
}
return str.toString();
}
______
しかし、PreparedStatement の setString メソッドを使うとセットする文字列を自動でエスケープしてくれるのでエスケープメソッドは必要なくなります。
PreparedStatement には setString だけでなく setInt, setLong などのメソッドもあります。
PreparedStatement pst = con.prepareStatement("select*from mytable where title=?");
pst.setString(1, req.getParameter("title"));
などのように利用するだけで req.getParameter("title") に SQL 命令文に影響を与える文字があってもエスケープしてくれます。
また、ステートメントを用意した後は setString メソッドなどを使ってパラメータを変えるだけで次のSQL 文を作成できるので高速に動作します。
ラベル:
データソース
データソース
この時点では SJC-WC の出題範囲ではないですが、JSP/サーブレットアプリケーションでデータベースへ接続する際は JNDI データソースを利用することが推奨されます。
データソースはコネクションプーリングという仕組みで、あらかじめ確保してあるデータベースへのコネクションプーリングからコネクションを利用します。
設定方法は
データソースはコネクションプーリングという仕組みで、あらかじめ確保してあるデータベースへのコネクションプーリングからコネクションを利用します。
設定方法は
- コンテキストファイルを編集する
- web.xml に resource-ref 要素を追加する
というようになります。これによりアプリケーション単位でデータベースへの接続を設定することができます。 Tomcat の server.xml に設定するとすべてのアプリケーションでデータソースを利用できます。
詳しい設定方法は JNDI Datasource HOW-TO に書かれています。
設定がうまくいかない場合は Tomcat の Administration Tool を使うこともできます。このツールではわかりやすいユーザーインターフェースで設定できます。
Administration Tool のインストールは Tomcat 5.5 のバージョンまでは提供されているようです。設定方法は zip を解答してファイルを配置するだけです。
ラベル:
データソース
2007年11月9日金曜日
試験の予約手順
- バウチャーチケットの購入
Sun のチケット購入ページからバウチャーチケットを購入します。
バウチャーチケットの購入ルートは他にもあるようなので検索してみてください。 - PROMETRIC のページから申し込みます。
EDIT(2010年): 2010年にOracleがSunを買収しました。それに伴い、今後はSJC-WCよりもOJC-WCという名前が浸透していくと考えられます。
ラベル:
Introduction
2007年10月21日日曜日
2007年10月17日水曜日
Tomcat
Tomcat は代表的なサーブレットエンジンです。
JSP や サーブレットのコンテナとして広く利用されています。
Tomcat のインストール
http://tomcat.apache.org/ よりダウンロード
クラスパスの設定
(例)
CATALINA_HOME → C:\Program Files\Apache Software Foundation\Tomcat5.5
CLASSPATH → .;%CATALINA_HOME%\common\lib\servlet-api.jar;%CATALINA_HOME%\common\lib\jsp-api.jar
Tomcat は Web サーバーとしても機能します。
Web サーバーとして大きなシェアを持っている Apache と組み合わせてTomcat をサーブレットコンテナ専用で使うのが現在の主流です。
ラベル:
基本メモ
tomcatPlugin
eclipse に tomcatPlugin を組み合わせると Web アプリケーションの開発が便利になります。
eclipsetotale.com より
eclipse のバージョンに対応した tomcatPlugin をダウンロードして eclipse の plugins フォルダに配置します。
eclipse を再起動すると完了です。
eclipsetotale.com より
eclipse のバージョンに対応した tomcatPlugin をダウンロードして eclipse の plugins フォルダに配置します。
eclipse を再起動すると完了です。
ラベル:
基本メモ
登録:
投稿 (Atom)