00 35Java高級之Java數據庫編程基礎操作

1 JDBC簡介

對於現代的開發幾乎所有的項目都是圍繞着數據庫展開的,你很少會見到沒有數據庫而單獨存在的項目。
所以任何一門的編程語言如果要想發展,那麼必須對數據庫的開發有所支持,同樣,Java從最初的時代開始就一直支持着數據庫的開發標準——JDBC(Java Database Connectivity),Java數據庫連接),JDBC本質上來講並不屬於一個技術,它屬於一種服務。而所有服務的特徵:必須按照指定的套路來進行操作。

在Java裏面專門爲JDBC提供有一個模塊(java.sql),裏面核心的一個開發包就是java.sql,在JDBC裏面核心的組成就是DriverManager類以及若干接口(Connection、Statement、PreparedStatement、ResultSet)。

對於JDBC的程序數據庫訪問也分爲如下的四種形式:
(1)JDBC-ODBC橋連接:利用微軟的ODBC技術進行數據庫連接,而後在利用JDBC技術訪問ODBC技術進行數據庫的開發,這種技術爲Java默認支持的技術,不需要做任何的額外配置即可實現;
|——處理流程:程序→JDBC→ODBC→數據庫,性能很擦汗,不會有人用。
(2)JDBC連接:直接利用JDBC進行數據庫的連接處理;
|——處理流程:程序→JDBC→數據庫,這種連接一般只連接本地數據庫服務器。
(3)JDBC網絡連接:通過特定的網絡協議連接指定的數據庫服務;
|——處理流程:程序→JDBC→網絡數據庫(IP地址和端口號);
(4)JDBC協議連接:自己通過編寫指定的協議操作實現數據庫的訪問;

2 連接Oracle數據庫

在本次將基於Oracle數據庫來實現JDBC的編程實現,那麼在這樣的情況下請一定要保證已經成功地啓動了Oracle數據庫的兩個重要服務:數據監聽服務(Listener)、實例服務(SID)。

由於本次將直接利用JDBC進行Oracle數據庫的連接,所以必須保證你的系統之中已經配置了Oracle的驅動程序。
(1)情況一:如果你現在使用記事本進行程序編寫,則需要將其手工配置到CLASSPATH之中;
(2)情況二:基於Eclipse開發,所以需要在JavaBuilderPath上配置此驅動程序。

如果現在要連接Oracle數據庫,則必須採用如下的步驟進行處理:
(1)通過反射機制將加載數據庫驅動程序類:oracle.jdbc.driver.OracleDriver
(2)數據庫連接需要有一個網絡的連接地址,該地址結構如下:
|——地址結構:jdbc:oracle:thin:@hostname:port:SID
|——LK數據庫:jdbc:oracle:thin:@localhost:60:lk
(3)數據庫的用戶名:scott
(4)數據庫密碼:******
對於數據庫的連接提供有java.sql.DriverManager的程序類,利用此類中的方法可以獲取一個Connection接口對象。
(1)獲取Connection接口對象:public static Connection getConnection​(String url, String user, String password) throws SQLException

範例:實現具體的數據庫連接操作

package org.lks.demo;

import java.sql.Connection;
import java.sql.DriverManager;

public class OracleJDBCDemo {
	private static final String DATABASE_DRIVER = "oracle.jdbc.driver.OracleDriver";
	private static final String DATABASE_URL = "jdbc:oracle:thin:@localhost:60:lk";
	private static final String DATABASE_USER = "scott";
	private static final String DATABASE_PASSWORD = "scott";
	
	public static void main(String[] args) throws Exception{
		Connection conn = null;  //每一個Connection接口對象描述的就是一個用戶連接
		Class.forName(DATABASE_DRIVER); //向容器之中加載數據庫驅動程序
		conn = DriverManager.getConnection(DATABASE_URL, DATABASE_USER, DATABASE_PASSWORD);
		System.out.println(conn);
		conn.close();  //數據庫的連接資源有限一定要關閉
	}
}

如果此時在輸出Connection接口對象的時候並沒有產生任何的異常,那麼就表示當前的Oracle已經可以正常的連接了。

但是這個時候肯定都在思考一個問題:爲什麼要連接Oracle數據庫的時候一定要單獨配置Oracle數據庫的驅動程序呢?首先要知道,JDBC是一個操作的標準,既然是一個標準,那麼就證明裏面是不牽扯到具體實現類的,有數據庫廠商來實現,下面將以上連接的連接過程通過類圖的關係來進行描述。

通過結構可以發現,整個的JDBC設計實現的就是一個工廠類的處理機制。DriverManager是一個工廠,不同的數據庫生產商利用JDBC提供的標準實現各自的數據庫處理操作。

3 連接MySQL數據庫

如果現在要連接MySQL數據庫,則必須採用如下的步驟進行處理:
(1)通過反射機制將加載數據庫驅動程序類:com.mysql.cj.jdbc.Driver
(2)數據庫連接需要有一個網絡的連接地址,該地址結構如下:
|——地址結構:jdbc:mysql://hostname:port/databasename?useSSL=false&serverTimezone=UTC
|——mysql數據庫:jdbc:mysql://localhost:3306/mysql?useSSL=false&serverTimezone=UTC
(3)數據庫的用戶名:root
(4)數據庫密碼:******
對於數據庫的連接提供有java.sql.DriverManager的程序類,利用此類中的方法可以獲取一個Connection接口對象。

範例:實現具體的數據庫連接操作

package org.lks.demo;

import java.sql.Connection;
import java.sql.DriverManager;

public class MySQLJDBCDemo {
	private static final String DATABASE_DRIVER = "com.mysql.cj.jdbc.Driver";
	private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/mysql?useSSL=false&serverTimezone=UTC";
	private static final String DATABASE_USER = "root";
	private static final String DATABASE_PASSWORD = "****";
	
	public static void main(String[] args) throws Exception{
		Connection conn = null;
		Class.forName(DATABASE_DRIVER);
		conn = DriverManager.getConnection(DATABASE_URL, DATABASE_USER, DATABASE_PASSWORD);
		System.out.println(conn);
		conn.close();
	}
}

// MySQL 8.0 以下版本 - JDBC 驅動名及數據庫 URL
    static final String DATABASE_DRIVER = "com.mysql.jdbc.Driver";  
    static final String DATABASE_URL = "jdbc:mysql://localhost:3306/RUNOOB";
 
// MySQL 8.0 以上版本 - JDBC 驅動名及數據庫 URL
static final String DATABASE_DRIVER = "com.mysql.cj.jdbc.Driver";  
static final String DATABASE_URL = "jdbc:mysql://localhost:3306/RUNOOB?useSSL=false&serverTimezone=UTC";

筆者MySQL數據庫版本爲8.0.19

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章