一、通過Driver介面或者DriverManager管理類來連線資料庫
阿新 • • 發佈:2019-02-10
一、通過driver介面連線資料庫
/** * Driver 是一個介面: 資料庫廠商必須提供實現的介面. 能從其中獲取資料庫連線. * 可以通過 Driver 的實現類物件獲取資料庫連線. * * 1. 加入 mysql 驅動 * 1). 解壓 mysql-connector-java-5.1.7.zip * 2). 在當前專案下新建 lib 目錄 * 3). 把 mysql-connector-java-5.1.7-bin.jar 複製到 lib 目錄下 * 4). 右鍵 build-path , add to buildpath 加入到類路徑下.s * @throws SQLException */ @Test public void testDriver() throws SQLException { //1. 建立一個 Driver 實現類的物件 Driver driver = new com.mysql.cj.jdbc.Driver(); //2. 準備連線資料庫的基本資訊: url, user, password String url = "
jdbc:mysql://localhost:3306/mydatabase2?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
";Properties info = new Properties();info.put("user", "root");info.put("password", "1230");//3. 呼叫 Driver 介面的 connect(url, info) 獲取資料庫連線Connection connection = driver.connect(url, info);System.out.println(connection);}以上方式連線資料庫是最基本的方式,但是沒有一定的靈活性,所以可以用Properties類讀取properties檔案來進行解耦,以便通過更改配置檔案而不更改程式碼來進行與其他資料庫的連線
String driverClass = null; String jdbcUrl = null; String user = null; String password = null; //讀取類路徑下的 jdbc.properties 檔案 InputStream in = getClass().getClassLoader().getResourceAsStream("jdbc.properties"); Properties properties = new Properties(); properties.load(in); driverClass = properties.getProperty("driver"); jdbcUrl = properties.getProperty("jdbcUrl"); user = properties.getProperty("user"); password = properties.getProperty("password"); //通過反射常見 Driver 物件. Driver driver = (Driver) Class.forName(driverClass).newInstance(); Properties info = new Properties(); info.put("user", user); info.put("password", password); //通過 Driver 的 connect 方法獲取資料庫連線. Connection connection = driver.connect(jdbcUrl, info); return connection; }
二、通過DriverManager管理類連線資料庫
/**
* DriverManager 是驅動的管理類.
* 1). 可以通過過載的 getConnection() 方法獲取資料庫連線. 較為方便
* 2). 可以同時管理多個驅動程式: 若註冊了多個數據庫連線, 則呼叫 getConnection()
* 方法時傳入的引數不同, 即返回不同的資料庫連線。
* @throws Exception
*/
@Test
public void testDriverManager() throws Exception{
//1. 準備連線資料庫的 4 個字串.
//驅動的全類名.
String driverClass = "com.mysql.cj.jdbc.Driver";
//JDBC URL
String jdbcUrl = "jdbc:mysql://localhost:3306/mydatabase2?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false";
//user
String user = "root";
//password
String password = "1230";
//2. 載入資料庫驅動程式(對應的 Driver 實現類中有註冊驅動的靜態程式碼塊.)
Class.forName(driverClass);
//3. 通過 DriverManager 的 getConnection() 方法獲取資料庫連線.
Connection connection =
DriverManager.getConnection(jdbcUrl, user, password);
System.out.println(connection);
}
通用性改寫
public Connection getConnection2() throws Exception{
//1. 準備連線資料庫的 4 個字串.
//1). 建立 Properties 物件
Properties properties = new Properties();
//2). 獲取 jdbc.properties 對應的輸入流
InputStream in =
this.getClass().getClassLoader().getResourceAsStream("jdbc.properties");
//3). 載入 2) 對應的輸入流
properties.load(in);
//4). 具體決定 user, password 等4 個字串.
String user = properties.getProperty("user");
String password = properties.getProperty("password");
String jdbcUrl = properties.getProperty("jdbcUrl");
String driver = properties.getProperty("driver");
//2. 載入資料庫驅動程式(對應的 Driver 實現類中有註冊驅動的靜態程式碼塊.)
Class.forName(driver);
//3. 通過 DriverManager 的 getConnection() 方法獲取資料庫連線.
return DriverManager.getConnection(jdbcUrl, user, password);
}
——————————————————————————————————————
附上jdbc.properties配置檔案的內容
#driver=oracle.jdbc.driver.OracleDriver
#jdbcUrl=jdbc:oracle:thin:@localhost:1521:orcl
#user=scott
#password=java
driver=com.mysql.cj.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/mydatabase2?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
user=root
password=1230