Class.forName("com.mysql.jdbc.Driver");
とClass.forName("com.mysql.jdbc.Driver").newInstance();
の両方がなぜデータベースに接続するのに使われるのか不思議でした。新しいインスタンスは作成されていないので、正しく、前者は動作しないはずはありません。それでも、それはまだ動作します。私はnetbeansを使用して6.9.1。あなたのご意見ありがとうございます!JDBC接続 - Class.forNameとClass.forName()。newInstance?
答えて
Class.forName("xxx")
は、データベースへの接続を作成せず、JDBCドライバをロードして登録し、その後のDriverManager.getConnection(...)
コールが機能するように登録します。ドライバを自分でインスタンス化する必要はありません。
jdbc 4.0をサポートするドライバでは、Class.forName()も必要ありません。 ドライバは、DriverManagerがそれを調べるときに、その場でロードするために構築されたメカニズムである を持っているはずです。
(参考:http://download.oracle.com/javase/6/docs/api/java/sql/DriverManager.html) DriverManagerのメソッドgetConnectionおよびgetDriversがJava Standard Edition Service Providerメカニズムをサポートするように拡張されました。 JDBC 4.0ドライバには、META-INF/services/java.sql.Driverファイルが含まれている必要があります。このファイルには、java.sql.DriverのJDBCドライバ実装の名前が含まれています。
アプリケーションはもはや必要
my.sql.Driver明示的に:たとえば、my.sql.Driverクラスをロードするために、META-INF /サービス/に、java.sql.driverファイルにはエントリが含まれますClass.forName()を使用してJDBCドライバをロードします。 Class.forName()を使用して現在JDBCドライバをロードしている既存のプログラムは、修正を行わずに引き続き動作します。
- 1. ダービーEmbeddedDriver Class.forNameの
- 2. Class.forName(...)とThread.currentThread.getContextClassLoader.loadClass(...)ビヘイビア
- 3. JDBCのClass.forName()メソッドは何ですか?
- 4. ClassNotFoundException Class.forName( "com.mysql.jdbc.Driver");
- 5. Class.forNameキャスト
- 6. 'Class.forName( "org.sqlite.JDBC");'行う?
- 7. メソッド内のClass.forName( "com.mysql.jdbc.Driver")
- 8. Spring with class.forname()
- 9. Class.forName(jdbcドライバクラス名)内部で何が起こるのですか?
- 10. 'Class.forName( "MY_JDBC_DRIVER")'の目的は何ですか?
- 11. Apache Spark 1.6.1のClass.forNameマップ
- 12. エラー接続JDBC
- 13. AndroidでのJDBC接続
- 14. JAVA JDBC再利用接続
- 15. JDBCとFirebirdsqlの接続
- 16. なぜJDBCを使用する必要がありますかClass.forName(...)各接続の書き込み?私は、データベースに接続する場合は
- 17. Class.forName( "com.mysql.jdbc.Driver")のセキュリティ保護方法
- 18. Class.forName( "SimpleClass")を保護する方法は?
- 19. Class.forName()を2回呼び出す
- 20. アンドロイドjdbc odbc接続
- 21. Hive JDBC接続NoClassDefFoundError
- 22. PostgreSQL JDBC接続エラー
- 23. MavenでのJDBC接続エラー
- 24. jdbc接続sqlite戻り値の型接続クラス
- 25. Java、JDBC接続プール、JDBC接続ロールバック
- 26. MSSQLサーバー2005-JDBC接続
- 27. JDBC接続URLの問題
- 28. Java EE/RESTful - JAX-RSとJSONがClass.forName(... ClientDriver)のSQLExceptionをスローする
- 29. class.forNameが引数として作成したパスクラス
- 30. なぜJavaはClass.forNameまたは動的ロードを必要としますか?
ありがとうございました!最後にqn-インスタンス化すると、後続のDriverManager.getConnection(..)は再びインスタンス化しません。それはあなたが最初のステップでそれをインスタンス化しなかった場合にのみそうするだろうか? – OckhamsRazor
私は、クラスをロードするだけで、ドライバマネージャはドライバでスタティックブロックによってトリガされていることを既にインスタンス化していると考えます。正直言って、私は完全には分かりません。インスタンス化したドライバを使用する場合は、DriverManagerを使用して接続を取得したり、DriverManager静的メソッドを使用して独自のドライバインスタンスを登録したりする必要はありません。 – araqnid