Java アプリケーションが MS Access データベースと通信できるようにする方法を学んでいます。
Class.forName() メソッドという 1 つのメソッドがわかりません。私が渡すパラメーターは「sun.jdbc.odbc.JdbcOdbcDriver」で、データベースにアクセスするために jdbc:odbc ブリッジをロードします。
Class.forName() は正確に何をし、なぜそれが必要なのですか?
どうもありがとうございました。
Class.forName()
ClassLoader がクラスをメモリにロードします。JDBC ドライバー クラスには、後で使用できるように DriverManager に登録する静的初期化子があります。を使用した後Class.forName()
、 を使用するDriverManager.getConnection("jdbc:*", database, username, password)
と、jdbc:
は既にメモリにロードされています。
Class.forName()
クラスを動的にロードするために使用されます。たとえば、 を呼び出しClass.forName("z")
た場合、これによりクラス z が初期化され、対応するオブジェクトが返されます。
String 形式のクラス名を使用して、クラスreflection
をインスタンス化するために使用します。sun.jdbc.odbc.JdbcOdbcDriver
これにより、コードDriver
クラスが独立し、ドライバー クラス名を String パラメーターとして外部に渡すことができます (これは、構成を通じて接続の詳細を渡すための標準的な動作です)。
Class.forName() はリフレクションを使用して、指定された名前のクラスをロードします。Class オブジェクトを返します。これを参照してください。
あなたの場合、ドライバーの種類をハードコーディングせずに、実行時に特定のドライバーをロードできます。ドライバー名をパラメーターとして渡すだけです。