JDBC如何獲取數(shù)據(jù)庫(kù)連接
JDBC(Java Database Connectivity),即Java數(shù)據(jù)庫(kù)連接。通過JDBC編程,可以使Java應(yīng)用程序和數(shù)據(jù)庫(kù)進(jìn)行交互。
JDBC驅(qū)動(dòng)的方式有很多種,我們常用的驅(qū)動(dòng)方式為:本地協(xié)議的純Java驅(qū)動(dòng)程序。
JDBC編程的第一步,就是要獲取數(shù)據(jù)庫(kù)連接。所謂的 “獲取數(shù)據(jù)庫(kù)連接” 其實(shí)就是創(chuàng)建java.sql.Connection接口的實(shí)現(xiàn)對(duì)象。通過Connection的實(shí)現(xiàn)對(duì)象,可以使Java程序連接到數(shù)據(jù)庫(kù),并修改和獲取數(shù)據(jù)庫(kù)信息。
獲取數(shù)據(jù)庫(kù)連接有兩種方式:1.通過java.sql.Driver接口獲取數(shù)據(jù)庫(kù)連接,2.通過java.sql.DriverManager(驅(qū)動(dòng)管理類)獲取數(shù)據(jù)庫(kù)連接。
為了使程序更具有通用性,我們可以通過讀取配置文件的方式來獲取連接數(shù)據(jù)庫(kù)所需要的信息。這樣可以通過修改配置文件的方式,使Java程序連接到不同的數(shù)據(jù)庫(kù)。
在進(jìn)行JDBC編程前,要先導(dǎo)入數(shù)據(jù)庫(kù)廠商提供的JDBC驅(qū)動(dòng)程序。
以下是獲取數(shù)據(jù)庫(kù)連接的兩種方式的程序演示。
[1] 通過java.sql.Driver接口獲取數(shù)據(jù)庫(kù)連接
/** * 1.通過java.sql.Driver接口獲取數(shù)據(jù)庫(kù)連接 * 2.使用配置文件讀取連接信息,使程序更加靈活 */ package com.pack02; import java.io.InputStream; import java.sql.Connection; import java.sql.Driver; import java.util.Properties; import org.junit.Test; public class TestDriver { @Test public void testDriver() throws Exception { //1.將配置文件中的連接信息獲取到Properties對(duì)象中 InputStream is = this.getClass().getClassLoader().getResourceAsStream("setting.properties"); Properties setting = new Properties(); setting.load(is); //2.從Properties對(duì)象中讀取需要的連接信息 String driverName = setting.getProperty("driver"); String url = setting.getProperty("url"); String user = setting.getProperty("user"); String password = setting.getProperty("password"); //3.創(chuàng)建Driver對(duì)象 Driver driver = (Driver)Class.forName(driverName).newInstance(); Properties info = new Properties(); //driver的connect方法中需要一個(gè)Properties型的參數(shù) info.put("user", user); info.put("password", password); //4.使用driver的connect方法獲取數(shù)據(jù)庫(kù)連接 Connection conn = driver.connect(url, info); System.out.println( conn ); } }
[2] 通過java.sql.DriverManager(驅(qū)動(dòng)管理類)獲取數(shù)據(jù)庫(kù)連接
/** * 1.通過java.sql.DriverManager(驅(qū)動(dòng)程序管理類)獲取數(shù)據(jù)庫(kù)連接 * 2.使用配置文件讀取連接信息,使程序更加靈活 */ package com.pack02; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.util.Properties; import org.junit.Test; public class TestDriverManager { @Test public void testDriverManager() throws Exception { //1.將配置文件中的連接信息獲取到Properties對(duì)象中 InputStream is = this.getClass().getClassLoader().getResourceAsStream("setting.properties"); Properties setting = new Properties(); setting.load(is); //2.從Properties對(duì)象中讀取需要的連接信息 String driverName = setting.getProperty("driver"); String url = setting.getProperty("url"); String user = setting.getProperty("user"); String password = setting.getProperty("password"); //3.加載驅(qū)動(dòng)程序,即將數(shù)據(jù)庫(kù)廠商提供的Driver接口實(shí)現(xiàn)類加載進(jìn)內(nèi)存; // 該驅(qū)動(dòng)類中的靜態(tài)代碼塊包含有注冊(cè)驅(qū)動(dòng)的程序,在加載類時(shí)將被執(zhí)行 Class.forName(driverName); //4.通過DriverManager類的靜態(tài)方法getConnection獲取數(shù)據(jù)連接 Connection conn = DriverManager.getConnection(url, user, password); System.out.println( conn ); } }
[3] 配置文件中需要的連接信息
driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/[....1....]?serverTimezone=GMT%2B8&useSSL=false user=root password=[....2....]
注意:
1. 上述信息中,[....1....] 替換成具體的數(shù)據(jù)庫(kù)名稱,[....2....] 替換成root密碼。
2. 在連接高版本的 MySQL 數(shù)據(jù)庫(kù)時(shí),要注意 driver 的包路徑 (高版本MySQL多了 “cj” ),url 連接地址的補(bǔ)充信息。(筆者的MySQL版本為8.0)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
IDEA?2021.3?使用及idea2021.3.1激活使用方法
IDEA?全稱?IntelliJ?IDEA,是java語(yǔ)言開發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認(rèn)為最好的java開發(fā)工具之一,今天通過本文給大家介紹idea2021.3.1激活及使用教程,感興趣的朋友一起看看吧2022-01-01一些java二進(jìn)制的相關(guān)基礎(chǔ)知識(shí)
這篇文章主要介紹了一些java二進(jìn)制的相關(guān)基礎(chǔ)知識(shí),在Java語(yǔ)言中byte代表最小計(jì)量單位,byte由8位2進(jìn)制數(shù)組成。,需要的朋友可以參考下2019-06-06Java實(shí)現(xiàn)按照大小寫字母順序排序的方法
這篇文章主要介紹了Java實(shí)現(xiàn)按照大小寫字母順序排序的方法,涉及java數(shù)組遍歷、編碼轉(zhuǎn)換、判斷等相關(guān)操作技巧,需要的朋友可以參考下2017-12-12Java中@ConfigurationProperties實(shí)現(xiàn)自定義配置綁定問題分析
這篇文章主要介紹了@ConfigurationProperties實(shí)現(xiàn)自定義配置綁定問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08springboot解決Class path contains multiple 
這篇文章主要介紹了springboot解決Class path contains multiple SLF4J bindings問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Java設(shè)置Map過期時(shí)間的的幾種方法舉例詳解
本文詳細(xì)介紹了Java中使用輕量級(jí)緩存組件ExpiringMap以及Guava的LoadingCache緩存機(jī)制,ExpiringMap提供了Map自動(dòng)過期、監(jiān)聽事件等功能,而LoadingCache提供了緩存回收、數(shù)據(jù)加載等高級(jí)功能,兩者為Java項(xiàng)目提供了有效的數(shù)據(jù)管理和緩存解決方案,需要的朋友可以參考下2024-10-10SpringBoot集成內(nèi)存數(shù)據(jù)庫(kù)Sqlite的實(shí)踐
sqlite這樣的內(nèi)存數(shù)據(jù)庫(kù),小巧可愛,做小型服務(wù)端演示程序,非常好用,本文主要介紹了SpringBoot集成Sqlite,具有一定的參考價(jià)值,感興趣的可以了解一下2021-09-09