- Home ›
- サーブレット/JSP入門 ›
- データベース接続
データベースへの接続と切断
JDBCドライバをロードすると、java.sql.DriverManagerクラスに利用可能なドライバとして登録されます。そしてデータベースへ接続するにはDriverManagerに接続しようとするデータベースの情報を指定し接続を行います。
まず下記のクラス図を見てください。
java.lang.Object java.sql.DriverManager public class DriverManager extends Object
データベースへの接続を確立するには「DriverManager」クラスで用意されている"getConnection"メソッドを使います。
public static Connection getConnection(String url, String user, String password) throws SQLException
指定されたデータベースの URL への接続を試みます。DriverManager は、登録 された JDBC ドライバの集合から適切なドライバを選択しようとします。 パラメータ: url - jdbc:subprotocol:subname 形式のデータベース URL user - その代理として接続が行われるデータベースユーザ password - ユーザのパスワード 戻り値: URL への接続 例外: SQLException - データベースアクセスエラーが発生した場合
引数には接続するデータベースを表すURLと接続用のユーザー名とパスワードを指定します。
MySQLの場合、URLの形式は次のようになります。
jdbc:mysql://(サーバ名)/(データベース名)
例えばローカルホストにある「jdbctestdb」というデータベースに接続する場合は次のようになります。
jdbc:mysql://localhost/jdbctestdb
実際には下記のように利用します。
Connection conn = null; String url = "jdbc:mysql://localhost/jdbctestdb"; String user = "testuser"; String password = "testpass"; try{ conn = DriverManager.getConnection(url, user, password); // データベースに対する処理 }catch (SQLException e){ }
データベースの切断
実際に接続のテストを行う前にデータベースの切断も見ておきます。"getConnection"メソッドの戻り値として取得できるConnectionインターフェースのオブジェクトは特定のデータベースとの接続 (セッション) を表します。
いったん接続した後に切断する場合には、接続の際に取得したConnectionインターフェースのオブジェクトに対して、"close"メソッドを使います。
void close() throws SQLException
自動的な解除を待たずに、ただちにこの Connection オブジェクトのデータベー スと JDBC リソースを解除します。 すでにクローズされた Connection オブジェクトで close メソッドを呼び出す と、操作は行われません。 注: Connection オブジェクトは、ガベージコレクトされるときに自動的にクロー ズされます。特定の致命的エラーの場合も、Connection オブジェクトはクローズ されます。 例外: SQLException - データベースアクセスエラーが発生した場合
"close"メソッドを呼び出さなくても最終的にはデータベースへの接続はガーベージコレクタによって切断されますが、利用しなくなったデータベースへの接続は速やかに切断するようにします。
"close"メソッドは何か問題が発生した際に忘れずに行うためにも、次のように"finally"節を使って記述します。
Connection conn = null; String url = "jdbc:mysql://localhost/jdbctestdb"; String user = "testuser"; String password = "testpass"; try{ conn = DriverManager.getConnection(url, user, password); // データベースに対する処理 }catch (SQLException e){ // 例外処理 }finally{ try{ if (conn != null){ conn.close(); } }catch (SQLException e){ // 例外処理 } }
では次のページでテスト用のデータベースの準備を行います。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。