另一種方法是有任何其他方式來加載數據庫驅動程序比的Class.forName?加載數據庫驅動程序在Java中
回答
現代JDBC驅動程序都應該在自己的jar文件清單提供足夠的元數據,所以你可能不需要做任何事情。
的Class#forName
主要的一點是,除去特定的JDBC驅動程序編譯時的依賴(並使其配置在運行時)。如果您在程序中始終使用Oracle驅動程序代碼(以使用其非標準JDBC擴展)並且沒有強制驅動程序類名的強制代碼,那麼您也可以創建驅動程序類的常規實例。
new oracle.jdbc.driver.OracleDriver();
通常情況下,你可以創建它的一個實例,但導致硬依賴於特定的驅動程序。
是做什麼用的Class.forName的原因是因爲你可以把它配置。它工作的原因是因爲它觸發了要運行的類的靜態初始化器,它允許它使用jdbc進行註冊。
總之,據我所知,你有兩個選擇:
- 的Class.forName - 允許配置的驅動程序 - 漂亮的
- 直接實例 - 創建固體類的依賴 - 不是很好
現代司機並不需要註冊,因爲他們有一個META-INF /服務/ java.sql.Driver中文件聲明司機的存在,通過包含驅動程序的名稱類。
只需使用DriverManager.getConnection(...)
,並發現驅動程序本身。
編輯 @Thilo:我只是在PostgreSQL測試它,和它的作品:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JdbcDriverLoadTest {
public static void main(String[] args) throws SQLException {
Connection c = DriverManager.getConnection("jdbc:postgresql://localhost:5434/IKOffice_Core", "ik", "ik0000");
System.out.println(c.getMetaData().getDatabaseProductName());
}
}
但是,您的應用程序需要正確記錄,最終用戶應該使用此[java.util.ServiceLoader']提供完整的JDBC 4兼容驅動程序(http://download.oracle.com/javase/6/docs/ api/java/util/ServiceLoader.html)功能,否則應用程序可能無法工作。迄今爲止,並非所有主要的JDBC驅動程序供應商都已經實現了這一點我仍然依靠'Class#forName()'並在完全殺死Class#forName()之前的一年或兩年後重新評估JDBC驅動程序的世界。 – BalusC 2010-09-26 19:46:34
您還可以將驅動程序類添加到系統屬性jdbc.drivers
這是冒號名單分開的驅動程序類名,DriverManager
類加載。
實施例:
java -Djdbc.drivers=oracle.jdbc.driver.OracleDriver MyApp
com.mysql.jdbc.Driver dr = null;
- 1. 在django-jython項目中加載數據庫驅動程序.jar
- 2. MySQL驅動程序不加載在Java
- 3. SQOOP 1無法加載Sybase驅動程序 - 無法加載數據庫驅動程序類:com.sybase.jdbc3.jdbc.SybDriver
- 4. 數據庫驅動類動態加載
- 5. QSqlDatabase:驅動程序未加載驅動程序未加載
- 6. oozie失敗,無法加載數據庫驅動程序類:oracle.jdbc.OracleDriver
- 7. Qt不加載任何數據庫驅動程序
- 8. 加載jdbc驅動程序連接到MySQL數據庫
- 9. OSGi ClassNotFoundException加載數據庫驅動程序時
- 10. QT:驅動程序未加載,但驅動程序存在
- 11. 使用OSR驅動程序加載程序加載驅動程序錯誤
- 12. 加載JDBC驅動程序
- 13. MongoDB文件中的數組未加載Java驅動程序
- 14. 在java類中加載jdbc驅動程序
- 15. 不能加載JDBC驅動程序爲MySQL數據源在WebLogic
- 16. QSQLITE驅動程序未加載 - 放置qt數據庫驅動程序插件的位置
- 17. FireBird數據庫的HDBC驅動程序
- 18. OSGi和數據庫驅動程序
- 19. 無法加載JDBC驅動程序。在
- 20. SpringBoot數據庫嵌入式數據庫驅動程序異常JAVA
- 21. 手動加載驅動程序
- 22. 使用java連接數據庫 - 驅動程序錯誤
- 23. 無法使用Mongo Java驅動程序創建數據庫
- 24. 的Java數據庫驅動程序設計
- 25. Oracle 10g數據庫的驅動程序java 6,7或8
- 26. Java驅動程序?
- 27. Zend Acl數據庫驅動加載所有數據
- 28. 如何使用驅動程序類從陣列加載數據
- 29. Playframework 2.0.3 - 每次編譯後重新加載數據庫驅動程序
- 30. 將Java數據庫加載到Java Swing應用程序
刪除了「oracle」標記,因爲該問題一般適用於JDBC。 – Daniel 2010-09-26 19:37:28