dポイントプレゼントキャンペーン実施中!

するときに以下のように
Class.forName (driver);
をする必要があるのですが
これの意味を教えてください
なぜこれが必要なのでしょうか?


・・・・・・・・・・・・・
// JDBCドライバの登録
String driver = "org.postgresql.Driver";
// データベースの指定
String url = "jdbc:postgresql://fedorasrv.com/test";
//サーバ名またはIPアドレス+データベース名
String user = "fedora";
//データベース作成ユーザ名
String password = "XXXXXXXX";
//データベース作成ユーザパスワード
Class.forName (driver);
// データベースとの接続
Connection con = DriverManager.getConnection(url, user, password);
・・・・・・・・・・・・・・

A 回答 (1件)

簡単に書くと、DriverをDriverManagerに登録するためです。


動作を順を追って書くと、
1.Class.forName()を呼び出すと、Driverのstaticイニシャライザ(static{}の部分)が呼ばれます。
2.DriverのstaticイニシャライザではDriver自身のインスタンスを生成してDriverManager.registerDriver()を呼び、DriverManagerにDriver自身を登録します。
3.DriverManager.getConnection()が呼ばれると、DriverManagerは登録されているDriverのacceptsURL()を呼び出し指定されたURLに対応出来るDriverが登録されているか調べます。そして、対応出来るDriverが見つかった場合はDriverのconnect()を呼び出してConnectionを取得します。

DriverManagerのソース、PostgerSQLやMySQLなどのJDBCドライバのソースは公開されているので見てみるとわかりやすいと思います。
    • good
    • 0
この回答へのお礼

詳しい説明ありがとうございました

お礼日時:2006/09/16 13:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!