2

Java アプリケーションが MS Access データベースと通信できるようにする方法を学んでいます。

Class.forName() メソッドという 1 つのメソッドがわかりません。私が渡すパラメーターは「sun.jdbc.odbc.JdbcOdbcDriver」で、データベースにアクセスするために jdbc:odbc ブリッジをロードします。

Class.forName() は正確に何をし、なぜそれが必要なのですか?

どうもありがとうございました。

4

4 に答える 4

7

Class.forName()ClassLoader がクラスをメモリにロードします。JDBC ドライバー クラスには、後で使用できるように DriverManager に登録する静的初期化子があります。を使用した後Class.forName()、 を使用するDriverManager.getConnection("jdbc:*", database, username, password)と、jdbc:は既にメモリにロードされています。

于 2012-11-23T16:53:24.803 に答える
1

Class.forName()クラスを動的にロードするために使用されます。たとえば、 を呼び出しClass.forName("z")た場合、これによりクラス z が初期化され、対応するオブジェクトが返されます。

于 2012-11-23T16:55:23.803 に答える
0

String 形式のクラス名を使用して、クラスreflectionをインスタンス化するために使用します。sun.jdbc.odbc.JdbcOdbcDriver

これにより、コードDriverクラスが独立し、ドライバー クラス名を String パラメーターとして外部に渡すことができます (これは、構成を通じて接続の詳細を渡すための標準的な動作です)。

于 2012-11-23T16:53:38.460 に答える
0

Class.forName() はリフレクションを使用して、指定された名前のクラスをロードします。Class オブジェクトを返します。これを参照してください。

あなたの場合、ドライバーの種類をハードコーディングせずに、実行時に特定のドライバーをロードできます。ドライバー名をパラメーターとして渡すだけです。

于 2012-11-23T16:53:23.297 に答える