亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JDBC獲取數(shù)據(jù)庫(kù)連接由淺入深

 更新時(shí)間:2022年02月09日 16:04:28   作者:辛巳ing  
大家好,本篇文章主要講的是JDBC獲取數(shù)據(jù)庫(kù)連接由淺入深,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下

添加MySQL驅(qū)動(dòng):

不同的數(shù)據(jù)庫(kù)廠商都會(huì)有自己的實(shí)現(xiàn)java.sql.Driver接口的驅(qū)動(dòng)程序,例如mysql的實(shí)現(xiàn)就是com.mysql.jdbc.Driver,將mysql-connector-java-版本號(hào)-bin.jar添加到相應(yīng)工程的目錄(如果是動(dòng)態(tài)web項(xiàng)目的話,需要將對(duì)應(yīng)的jar包放到WebRoot目錄下)下面,右鍵選擇add as library就完成了(如果是使用的eclipse,則是點(diǎn)擊build path)。

在mysql8.0之后驅(qū)動(dòng)程序的全路徑應(yīng)該是com.mysql.cj.jdbc.Driver,使用原來(lái)的路徑也可以正確運(yùn)行,只是運(yùn)行時(shí)會(huì)在終端輸出一段推薦使用新路徑的紅色文字

獲取連接:

Driver

獲取連接之前。首先需要?jiǎng)?chuàng)建驅(qū)動(dòng)類的對(duì)象,通過(guò)驅(qū)動(dòng)類的connect()方法即可獲取數(shù)據(jù)庫(kù)連接。connect()方法的參數(shù)如下所示:

Connection connect(String url, java.util.Properties info)

其中url是用來(lái)標(biāo)識(shí)一個(gè)驅(qū)動(dòng)程序,而驅(qū)動(dòng)程序管理器就是通過(guò)url來(lái)選擇正確的驅(qū)動(dòng)程序。url的格式為:jdbc:子協(xié)議:子名稱。

jdbc是JDBC url中的協(xié)議,而且在JDBC中協(xié)議恒為jdbc

子協(xié)議:用于標(biāo)識(shí)一個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,MySQL就是mysql。

子名稱:同來(lái)標(biāo)識(shí)數(shù)據(jù)庫(kù),格式為 主機(jī)名:端口號(hào)/數(shù)據(jù)庫(kù)名

例:jdbc:mysql://localhost:3306/databasename
Properties類型的info則是用來(lái)提供數(shù)據(jù)庫(kù)的用戶名(user)和密碼(password)

綜上所述,我們可以將獲取連接分為四步,分別是:

實(shí)例化Driver類
提供url
通過(guò)Properties提供用戶名和密碼
調(diào)用Driver類的connect()方法獲取連接
具體實(shí)現(xiàn)代碼為:

@Test
public void testConnection(){
	try {
		//提供驅(qū)動(dòng)接口類的實(shí)現(xiàn)對(duì)象
		Driver driver = null;
        driver = new com.mysql.cj.jdbc.Driver();

        //url,指明具體要操作的數(shù)據(jù)
        String url = "jdbc:mysql://localhost:3306/test";

		//指明用戶名和密碼
	    Properties pros = new Properties();
		pros.setProperty("user", "root");
	    pros.setProperty("password", "root");

        //通過(guò)Driver中的connect()方法獲取連接
		Connection connect = driver.connect(url, pros);
	    System.out.println(connect);
    } catch (SQLException e) {
		e.printStackTrace();
	}
}

使用以上的代碼有一個(gè)缺點(diǎn)就是在代碼中使用了第三方的API,我們可以通過(guò)反射的方式來(lái)創(chuàng)建驅(qū)動(dòng)類的對(duì)象,改進(jìn)后的代碼為:

@Test
public void testConnection(){
	try {
		//實(shí)例化Driver
		String className = "com.mysql.cj.jdbc.Driver";
	    Class cls = Class.forName(className);
        Driver driver = (Driver)cls.newInstance();

        //url,指明具體要操作的數(shù)據(jù)
        String url = "jdbc:mysql://localhost:3306/test";

		//指明用戶名和密碼
	    Properties pros = new Properties();
		pros.setProperty("user", "root");
	    pros.setProperty("password", "root");

        //通過(guò)Driver中的connect()方法獲取連接
		Connection connect = driver.connect(url, pros);
	    System.out.println(connect);
    } catch (SQLException e) {
		e.printStackTrace();
	}
}

DriverManager

通過(guò)DriverManager的getConnection()方法來(lái)獲取連接,首先看一下該方法的參數(shù)詳情:

public static Connection getConnection(String url,String user, String password)

通過(guò)該方法的三個(gè)參數(shù)再加上驅(qū)動(dòng)的具體路徑,我們可以得知通過(guò)這種方法獲取數(shù)據(jù)庫(kù)連接的四個(gè)要素分別為:

url
用戶名
密碼
驅(qū)動(dòng)路徑
所以現(xiàn)在獲取連接的步驟應(yīng)該為:

給明獲取數(shù)據(jù)庫(kù)連接的四要素
實(shí)例化Driver
注冊(cè)驅(qū)動(dòng)
獲取連接
具體代碼為:

@Test
public void testConnection(){
	try {
        //給出數(shù)據(jù)庫(kù)連接的四個(gè)基本要素
		String url = "jdbc:mysql://127.0.0.1:3306/test";
	    String driverName = "com.mysql.cj.jdbc.Driver";
        String user = "root";
		String password = "root";

		//實(shí)例化Driver
    	Class cls = Class.forName(driverName);
	    Driver driver = (Driver)cls.newInstance();

        //注冊(cè)驅(qū)動(dòng)
		DriverManager.registerDriver(driver);

	    //獲取連接
        Connection connection = DriverManager.getConnection(url, user, password);
		System.out.println(connection);
	} catch (Exception e) {
        e.printStackTrace();
	}
}

但是以上的方式任然可以簡(jiǎn)化,我們先來(lái)看com.mysql.cj.jdbc.Driver的具體實(shí)現(xiàn):

public class Driver extends NonRegisteringDriver implements java.sql.Driver {
    public Driver() throws SQLException {
    }

    static {
        try {
            DriverManager.registerDriver(new Driver());
        } catch (SQLException var1) {
            throw new RuntimeException("Can't register driver!");
        }
    }
}

可以看到在Driver類中有一個(gè)靜態(tài)代碼塊中有注冊(cè)驅(qū)動(dòng)的那一步,所以在實(shí)例化Driver類的時(shí)候同時(shí)就將驅(qū)動(dòng)注冊(cè)了,所以以上代碼中注冊(cè)驅(qū)動(dòng)的代碼可以刪掉。

通過(guò)配置文件配合DriverManager獲取連接

我們可以將獲取數(shù)據(jù)庫(kù)連接的四大要素寫在配置文件中,首先創(chuàng)建配置文件jdbc.properties,其中內(nèi)容為:

user=root
password=root
url=jdbc:mysql://localhost:3306/test
driverName=com.mysql.cj.jdbc.Driver

通過(guò)讀取配置文件中的信息獲得四要素,從而獲取連接,最終版的代碼為:

@Test
public void testConnection5(){
	try {
        //加載配置文件
		//最終版配合配置文件使用
	    Properties pros = new Properties();
        InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
		pros.load(is);

	    //讀取配置信息
        String user = pros.getProperty("user");
		String password = pros.getProperty("password");
	    String url = pros.getProperty("url");
        String driverName = pros.getProperty("driverName");

		//加載驅(qū)動(dòng)
	    Class.forName(driverName);

        //獲取連接
		Connection connection = DriverManager.getConnection(url, user, password);
		System.out.println(connection);
	} catch (Exception e) {
        e.printStackTrace();
	}
}

通過(guò)這種方式獲取數(shù)據(jù)庫(kù)的連接時(shí),如果需要修改用戶名密碼,驅(qū)動(dòng)類或者操作的數(shù)據(jù)庫(kù)時(shí)就不再需要修改代碼,只需要修改配置文件中的各項(xiàng)的值即可實(shí)現(xiàn)更改。

到此這篇關(guān)于JDBC獲取數(shù)據(jù)庫(kù)連接由淺入深的文章就介紹到這了,更多相關(guān)JDBC獲取數(shù)據(jù)庫(kù)連接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 實(shí)例解析Java單例模式編程中對(duì)抽象工廠模式的運(yùn)用

    實(shí)例解析Java單例模式編程中對(duì)抽象工廠模式的運(yùn)用

    這篇文章主要介紹了實(shí)例解析Java單例模式編程中對(duì)抽象工廠模式的運(yùn)用,抽象工廠模式可以看作是工廠方法模式的升級(jí)版,本需要的朋友可以參考下
    2016-02-02
  • Java將Exception信息轉(zhuǎn)為String字符串的方法

    Java將Exception信息轉(zhuǎn)為String字符串的方法

    今天小編就為大家分享一篇Java將Exception信息轉(zhuǎn)為String字符串的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Java日期時(shí)間使用方法匯總

    Java日期時(shí)間使用方法匯總

    這篇文章主要針對(duì)Java日期時(shí)間使用方法進(jìn)行匯總,感興趣的朋友可以參考一下
    2016-03-03
  • SpringBoot中的multipartResolver上傳文件配置

    SpringBoot中的multipartResolver上傳文件配置

    這篇文章主要介紹了SpringBoot中的multipartResolver上傳文件配置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Eclipse+Java+Swing實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)的實(shí)例代碼

    Eclipse+Java+Swing實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)的實(shí)例代碼

    這篇文章主要介紹了Eclipse+Java+Swing實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 簡(jiǎn)單了解SpringBoot過(guò)濾器及使用方式

    簡(jiǎn)單了解SpringBoot過(guò)濾器及使用方式

    這篇文章主要介紹了簡(jiǎn)單了解SpringBoot過(guò)濾器及使用方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Hibernate初體驗(yàn)及簡(jiǎn)單錯(cuò)誤排除代碼詳解

    Hibernate初體驗(yàn)及簡(jiǎn)單錯(cuò)誤排除代碼詳解

    這篇文章主要介紹了Hibernate初體驗(yàn)及簡(jiǎn)單錯(cuò)誤排除代碼詳解,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Java中的LinkedBlockingQueue源碼解析

    Java中的LinkedBlockingQueue源碼解析

    這篇文章主要介紹了Java中的LinkedBlockingQueue源碼解析,LinkedBlockingQueue底層是一個(gè)鏈表(可以指定容量,默認(rèn)是Integer.MAX_VALUE),維持了兩把鎖,一把鎖用于入隊(duì),一把鎖用于出隊(duì),并且使用一個(gè)AtomicInterger類型的變量保證線程安全,需要的朋友可以參考下
    2023-12-12
  • 如何通過(guò)idea實(shí)現(xiàn)springboot集成mybatis

    如何通過(guò)idea實(shí)現(xiàn)springboot集成mybatis

    這篇文章主要介紹了如何通過(guò)idea實(shí)現(xiàn)springboot集成mybatis,使用springboot 集成 mybatis后,通過(guò)http請(qǐng)求接口,使得通過(guò)http請(qǐng)求可以直接操作數(shù)據(jù)庫(kù),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • java 中clone()的使用方法

    java 中clone()的使用方法

    這篇文章主要介紹了java 中clone()的使用方法的相關(guān)資料,希望通過(guò)本文能幫助大家能掌握clone()的克隆方法,需要的朋友可以參考下
    2017-09-09

最新評(píng)論