上海快3官方网

追萬軟件公司-專業從事企業軟件定制系統軟件開發用戶管理系統進銷存系統等軟件開發

JDBC加載數據庫驅動的方式

 JDBCZUOWEISHUJUKUFANGWENDEGUIFANJIEKOU,QIZHONGZHISHIDINGYIYIXIEJIEKOU。JUTIDESHIXIANSHIYOUGEGESHUJUKUCHANGSHANGLAIWANCHENG。

  YI、ZHONGYAODEJIEKOU:

  1.public interface Driver 每個驅動程序類必須實現的接口。Java SQL 框架允許多個數據庫驅動程序。每個驅動程序都應該提供一個實現 Driver 接口的類。DriverManager 會試著加載盡可能多的它可以找到的驅動程序,然后,對于任何給定連接請求,它會讓每個驅動程序依次試著連接到目標 URL。強烈建議每個 Driver 類應該是小型的并且是單獨的,這樣就可以在不必引入大量支持代碼的情況下加載和查詢 Driver 類。在加載某一 Driver 類時,它應該創建自己的實例并向 DriverManager 注冊該實例。這意味著用戶可以通過調用以下程序加載和注冊一個驅動程序   Class.forName("foo.bah.Driver")。例如:MYSQL驅動 上海快3官方网com.mysql.jdbc.Driver

  2.public interface Connection 與特定數據庫的連接(會話)。在連接上下文中執行 SQL 語句并返回結果。

  3.public interface Statement 用于執行靜態 SQL 語句并返回它所生成結果的對象。

  4.public interface PreparedStatement 表示預編譯的 SQL 語句的對象。SQL 語句被預編譯并存儲在 PreparedStatement上海快3官方网 對象中。然后可以使用此對象多次高效地執行該語句。

上海快3官方网  ER、QUDONGDEJIAZAIFANGSHI

上海快3官方网  1.ZUICHANGYONGDESHISHIYONG Class.forName("com.mysql.jdbc.Driver");FANGSHI。ZHEXINGDAIMAZHISHISHIYONGDANGQIANDELEIJIAZAIQUJIAZAIJUTIDESHUJUKUQUDONG,BUYAOXIAOKANZHEJIANDANDEZHEYIXINGDAIMA。ZAIDriverLEIZHONGDEstaticYUZHONGBADANGQIANQUDONGZHUCEDAODriverManagerZHONG。

復制代碼

 static {        try {
            java.sql.DriverManager.registerDriver(new Driver());//注冊驅動
        } catch (SQLException E) {            throw new RuntimeException("Can't register driver!");
        }
    }

復制代碼

  2.TONGGUOCHAKANDriverManagerYUANMA,WOMENYEKEYISHIYONGSystem.setProperty("jdbc.drivers","....")FANGSHI。

復制代碼

String drivers;
try {
    drivers = AccessController.doPrivileged(new PrivilegedAction<String>() {
        public String run() {
            return System.getProperty("jdbc.drivers");
        }
    });
} catch (Exception ex) {
    drivers = null;
}
String[] driversList = drivers.split(":");
println("number of Drivers:" + driversList.length);
for (String aDriver : driversList) {
    try {
        println("DriverManager.Initialize: loading " + aDriver);
        Class.forName(aDriver, true,
                ClassLoader.getSystemClassLoader());
    } catch (Exception ex) {
        println("DriverManager.Initialize: load failed: " + ex);
    }
}

復制代碼

上海快3官方网  3.ZUIZHIJIE(BUTUIJIAN)FANGSHInew com.mysql.jdbc.Driver();

  4.WEILEGENGHAODESHIYONGSHUJUKUQUDONG,JDBCWEIWOMENTIGONGLEDriverManagerLEI。RUGUOWOMENDOUMEIYOUSHIYONGYISHANGFANGSHI,DriverManagerCHUSHIHUAZHONGHUITONGGUOServiceLoaderLEI,ZAIWOMENclasspathZHONGjar(SHUJUKUQUDONGBAO)ZHONGCHAZHAO,RUCUNZAIMETA-INF/services/java.sql.DriverWENJIAN,ZEJIAZAIGAIWENJIANZHONGDEQUDONGLEI。

復制代碼

 AccessController.doPrivileged(new PrivilegedAction<Void>() {            public Void run() {

                ServiceLoader<Driver> loadedDrivers = ServiceLoader.load(Driver.class);
                Iterator<Driver> driversIterator = loadedDrivers.iterator();               
                 /* Load these drivers, so that they can be instantiated.
                 * It may be the case that the driver class may not be there
                 * i.e. there may be a packaged driver with the service class
                 * as implementation of java.sql.Driver but the actual class
                 * may be missing. In that case a java.util.ServiceConfigurationError
                 * will be thrown at runtime by the VM trying to locate
                 * and load the service.
                 *
                 * Adding a try catch block to catch those runtime errors
                 * if driver not available in classpath but it's
                 * packaged as service and that service is there in classpath.                
                  */
                try{                    while(driversIterator.hasNext()) {
                        driversIterator.next();
                    }
                } catch(Throwable t) {                // Do nothing               
                 }               
                 return null;
            }
        });



最新文章

熱門文章