最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JDBC獲取數(shù)據(jù)庫連接的5種方式實(shí)例

 更新時(shí)間:2022年06月20日 09:26:15   作者:COWARD_LOVE1  
JDBC是一種用于執(zhí)行SQL語句的JavaAPI,為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成,提供了諸如查詢和更新數(shù)據(jù)庫中數(shù)據(jù)的方法,這篇文章主要給大家介紹了關(guān)于JDBC獲取數(shù)據(jù)庫連接的5種方式,需要的朋友可以參考下

方式一:直接通過數(shù)據(jù)庫廠商提供的相關(guān)驅(qū)動(dòng)

步驟

  1. 導(dǎo)入相關(guān)驅(qū)動(dòng)(Build Path)
  2. 創(chuàng)建Driver類的實(shí)例化對(duì)象
  3. 獲取要連接數(shù)據(jù)庫的URL
  4. 創(chuàng)建Properties類的實(shí)例化對(duì)象,將賬號(hào)和密碼封裝到該對(duì)象中
  5. 通過Driver實(shí)例化對(duì)象調(diào)用connect(String url,Properties info)方法獲取connection對(duì)象
package connection;
 
import java.sql.Connection;
import java.sql.Driver;
import java.sql.SQLException;
import java.util.Properties;
 
import org.junit.jupiter.api.Test;
 
public class ConnectionTest {
    @Test
    public void test() throws SQLException {
        //創(chuàng)建Driver實(shí)例
        Driver driver=new com.mysql.cj.jdbc.Driver();
        //獲取要讀取數(shù)據(jù)庫的URL
        String url="jdbc:mysql://localhost:3306/test04_emp";
        //將賬號(hào)密碼封裝到Properties對(duì)象中
        Properties info=new Properties();
        info.setProperty("user", "root");
        info.setProperty("password", "abc123");
        //通過Driver的對(duì)象獲取連接
        Connection connect=driver.connect(url, info);
        //調(diào)用連接的toString()
        System.out.println(connect);
    }
}

方法二:通過反射的方式來構(gòu)造Driver對(duì)象

  1. 通過Class的forName(Stirng className)獲取驅(qū)動(dòng)的運(yùn)行時(shí)類。
  2. 通過運(yùn)行時(shí)類的newInstance()來獲取運(yùn)行時(shí)類的對(duì)象。
  3. 獲取URL和將賬號(hào)密碼封裝到Properties對(duì)象中。
  4. 使用運(yùn)行時(shí)類的對(duì)象調(diào)用connect()方法獲取連接。
@Test
    public void test2() throws Exception {
        //通過反射的方式獲取運(yùn)行時(shí)類
        Class clazz=Class.forName("com.mysql.cj.jdbc.Driver");
        //通過反射的方式創(chuàng)建運(yùn)行時(shí)類對(duì)象
        Driver driver=(Driver)clazz.newInstance();
        //獲取URL
        String url="jdbc:mysql://localhost:3306/test04_emp";
        //封裝賬號(hào)密碼
        Properties info=new Properties();
        info.setProperty("user", "root");
        info.setProperty("password", "abc123");
        //獲取連接
        Connection connect=driver.connect(url, info);
        System.out.println(connect);
    }

方式三:使用DriverManager來替換Driver獲取連接

  1. 獲取Driver的實(shí)現(xiàn)類對(duì)象。
  2. 使用DriverManager的registerDriver(Driver driver)方法來注冊(cè)驅(qū)動(dòng)。
  3. 提供URL、賬號(hào)和密碼。
  4. 使用DriverManager的getConnection(String url,String user,String password)來獲取連接。
@Test
    public void test3() throws Exception {
        //通過反射的方式獲取Driver對(duì)象
        Driver driver=(Driver)Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
        //調(diào)用DriverManager的registerDriver(Driver driver)方法注冊(cè)驅(qū)動(dòng)
        DriverManager.registerDriver(driver);
        //提供賬號(hào)、密碼和URL
        String user="root";
        String password="abc123";
        String url="jdbc:mysql://localhost:3306/test04_emp";
        //調(diào)用DriverManager的getConnection()方法來獲取連接
        Connection connect=DriverManager.getConnection(url,user,password);
        System.out.println(connect);
        /*getConnection()還有一種版本:getConnection(String url,Properties info)
         * 可以參考方法一和方法二。
         */
    }

方法四:省略創(chuàng)建Driver對(duì)象和注冊(cè)驅(qū)動(dòng)

  1. 通過反射將Driver類加載到內(nèi)存中。
  2. 提供賬號(hào)、密碼和URL。
  3. 通過DriverManager調(diào)用getConnection()獲取連接。

注意:這里之所以可以省略創(chuàng)建Driver對(duì)象和注冊(cè)驅(qū)動(dòng)是因?yàn)椋瑒?chuàng)建Driver對(duì)象的目的是給DriverManager調(diào)用registerDriver()注冊(cè)驅(qū)動(dòng)時(shí)提供參數(shù),而在Driver類加載到內(nèi)存中時(shí),有一個(gè)static方法會(huì)自動(dòng)調(diào)用registerDriver()方法,從而自動(dòng)注冊(cè)驅(qū)動(dòng)。

@Test
    public void test4() throws Exception {
        //通過反射將Driver加載到內(nèi)存中
        Class.forName("com.mysql.cj.jdbc.Driver");
        //提供相關(guān)信息
        String user="root";
        String password="abc123";
        String url="jdbc:mysql://localhost:3306/test04_emp";
        //通過getConnection()獲取連接
        Connection connect=DriverManager.getConnection(url,user,password);
        System.out.println(connect);
    }

方式五:通過配置文件的方式

  1. 創(chuàng)建配置文件
  2. 通過類的加載器生成指向配置文件的流
  3. 創(chuàng)建Properties對(duì)象,通過調(diào)用load()方法將配置文件加載到內(nèi)存中
  4. 通過Properti對(duì)象的getProperty(String key)獲取相關(guān)信息
  5. 通過反射的方式加載驅(qū)動(dòng)
  6. 調(diào)用getConnection()獲取連接
@Test
    public void test5() throws Exception {
        //通過類加載器創(chuàng)建一個(gè)指向配置文件的流
        InputStream input=ConnectionTest.class.getClassLoader().getResourceAsStream("test.properties");
        //創(chuàng)建Properties對(duì)象
        Properties infoProperties=new Properties();
        //以流為參數(shù)調(diào)用load()加載配置文件
        infoProperties.load(input);
        //獲取相關(guān)信息
        String driver=infoProperties.getProperty("driver");
        String url=infoProperties.getProperty("url");
        String user=infoProperties.getProperty("user");
        String password=infoProperties.getProperty("password");
        //加載驅(qū)動(dòng)
        Class.forName(driver);
        //獲取連接
        Connection connection= DriverManager.getConnection(url, user, password);
        System.out.println(connection);
    }

我們通常都使用方式五

每種方式迭代的原因

第一種方式是直接通過使用指定數(shù)據(jù)庫廠商的驅(qū)動(dòng)來獲取數(shù)據(jù)庫連接的,但是我們希望程序具有更好的可移植性,所以采用反射的方式來獲取驅(qū)動(dòng),這就產(chǎn)生了第二種方法;在開發(fā)中,我們通常都不使用Driver來獲取連接,而是通過使用DriverManager來獲得數(shù)據(jù)庫連接,這就從第二種方式到了第三種方式;又因?yàn)镈river的實(shí)現(xiàn)類中有靜態(tài)方法調(diào)用了regiesterDriver()方法,所以在通過反射的方式將類加載到內(nèi)存中時(shí),會(huì)自動(dòng)注冊(cè)驅(qū)動(dòng),我們可以將注冊(cè)驅(qū)動(dòng)的過程省略,這就產(chǎn)生了第四種方法;在前面的方法中,我們都是直接把賬號(hào)密碼和URL以及驅(qū)動(dòng)的名稱直接寫在程序中的額,這不太符合我們?nèi)粘5囊?guī)范,也在一定程度上增加了程序的 風(fēng)險(xiǎn),為此我們將相關(guān)信息保存在配置文件中,在程序中通過讀取配置文件的方式來獲取相關(guān)的信息,這就產(chǎn)生了最后一種也是我們最常用的方式。

方式五的優(yōu)點(diǎn)

  1. 將需要的數(shù)據(jù)放到配置文件中,實(shí)現(xiàn)了數(shù)據(jù)和代碼分離,減少了耦合性。
  2. 如果需要修改配置文件信息,只需要替換文件就可以,避免了重新打包文件。

總結(jié)

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

相關(guān)文章

最新評(píng)論

南丹县| 大庆市| 南木林县| 贵德县| 罗田县| 西丰县| 修武县| 沁阳市| 依安县| 军事| 阿勒泰市| 昭平县| 上蔡县| 合肥市| 连云港市| 义马市| 马山县| 海城市| 青铜峡市| 分宜县| 钟祥市| 泽普县| 永春县| 余庆县| 渭源县| 石景山区| 长丰县| 获嘉县| 罗田县| 长顺县| 瓦房店市| 沭阳县| 翼城县| 达拉特旗| 固阳县| 涟水县| 五华县| 全南县| 阜宁县| 宜川县| 平乡县|