2011-01-04 6 views

答えて

2

ドライバクラスは、jdbcドライバであるロードされたクラスを検索するため、ドライバクラスをロードすることによってデータベースドライバをロードします。

第2は、指定されたパス、ユーザー名とパスワードでデータベースへの接続を確立します。セッションを操作したり、文を準備したりするための接続オブジェクトを返します。

Thirdは文を作成します。照会の実行にはStatementオブジェクトが使用されます。サイドノートとして

+4

+1 ".newInstance()"は不要です。クラスをロードして 'DriverManager'に登録するだけで、そのインスタンスを作成する必要はありません。 –

+0

補足として、DriverManagerはクラスを発見しません。これについては、以下に述べるShengyuanのように、それらについて述べられています。 – jtahlborn

1
// loads the vendor specific jdbc library - there are many to choose from 
Class.forName("com.mysql.jdbc.Driver").newInstance(); 

// this is what tells the library to connect, using the vendor specific pattern 
con = DriverManager.getConnection("jdbc:mysql://10.10.1.1/test","USERNAME","SATHE"); 

// this prepares the statement from the connection. 
Statement stmt=con.createStatement(); 
1

1.6でドライバ登録ラインは必要ありません:DriverManagerが自動的ジャーを想定ドライバーがクラスパス上で発見するよう

Class.forName("com.mysql.jdbc.Driver"); 

は。

+0

本当にそうでないことは間違いありません。 – jtahlborn

+0

DriverManager用のjavadocを読んでから、最近のjdbcドライバのjarファイルを見て、mysqlのように/ META-INF/servicesファイルが見つかるでしょうかと私は確信しています。 –

+0

私は修正しました。私はjdbc 4.0がサービスプロバイダのメカニズムのサポートを追加したことを認識しませんでした。あなたの最後のステートメントは少し誤解を招きます。問題のjarには適切なサービスファイルが含まれていなければなりません。そして、私のシステム上でmysql jarをプルアップすると、このファイルが\ n含まれていないことが示されます。 – jtahlborn

0

Class.forName()でJVMにロードされている場合、DriverManager.registerDriver()のようないくつかのメソッドがcom.mysql.jdbc.Driverによって呼び出されます。つまり、mysqlはDriverManagerに自身を登録します。だからDriverManager.getConnection()が動作する可能性があります。

Javaソースcom.mysql.jdbc.Driverを読んで見つけてください。

関連する問題