Java開發工程師(Web方向) - 03.數據庫開發 - 第1章.JDBC
第1章--JDBC
JDBC基礎
通過Java Database Connectivity可以實現Java程序對後端數據庫的訪問
一個完整的數據庫部署架構,通常是由客戶端和服務器端兩部分組成
客戶端封裝數據庫請求,並發送給服務器端,服務器端執行完畢後將結果返回給客戶端
常見客戶端工具:
MySQL Workbench(圖形化工具操作簡單,但只能實現簡單的查詢)
JDBC(驅動程序jar包)
命令行工具(直接敲入SQL語句進行查詢)
市面上多種數據庫不盡相同,學習成本高,數據庫遷移的移植性
-- JDBC(普通的Java類庫): 應用程序通過統一的接口,即可實現對任意數據庫的訪問。
對於數據庫廠商來說,JDBC就是一套接口規範,每一個數據庫都需要實現JDBC定義的接口,用戶通過接口訪問數據庫即可。
JDBC優勢:對數據庫的訪問簡單,開發快捷、省時間,面向不同數據庫時的移植性強,在JDBC上可以定制功能強大的框架(如MyBatis)
體系架構:
上層API層負責與Java Web程序之間的通信
JDBC API:
Driver & DriverManager:
Driver是驅動程序的抽象,通過操作Driver接口,可以實現對各個驅動程序的操作
DriverManager是驅動程序的管理類,用戶通過Class.forname(DriverName)向DriverManager註冊一個驅動程序,
之後通過DriverManager的getConnection方法調用該驅動程序建立到後端數據庫的物理連接。
DriverManager.getConnection(DB_URL, USER, PASS));
// USER和PASS在部署數據庫時獲得
// DB_URL是後端數據庫實例的唯一標識符
i.e. jdbc : mysql : //10.164.172.20:3306/cloud_study
協議 子協議 子名稱(主機 端口 數據庫)
(子協議不同,子名稱的格式也略有不同。)
Connection:通過DriverManager的getConnection方法獲得的到後端數據庫的物理連接
Java應用程序對後端數據庫的一條物理連接
通過這些連接,可以執行一些SQL語句:
Statement stmt = conn.createStatement(); // sql statement
Statement:sql語句的容器,用於承載sql語句,在該容器中,可以進行增刪改查等操作
通過executeQuery方法,執行數據庫查詢並得到返回結果的集合,以ResultSet類的對象來表示:
ResultSet rs = stmt.executeQuery("select userName from user");
通過executeUpdate方法,執行數據庫更新、刪除語句,返回的是int值的對象,代表被影響的數據庫記錄數量
ResultSet對象表示一個sql語句查詢的結果。
關系型數據庫:二元表 -- ResultSet對象也是由行和列組成的
ResultSet對象內部有一個指針,指向當前對應的行記錄(默認指向第一行記錄)
.next():將指針移動到下一行
.previous():將指針移動到下一行
.absolute():將指針定位在某一行
.beforeFirst():將指針移到第一行的之前(通過.next()才能到第一行)
.afterLast():將指針移到最後一行之後
.getString(ColumnName/Index):(index從0開始)獲取對應列的值
.getInt(ColumnName/Index):
.getObject(ColumnName/Index):
SQLException:在執行過程中MySQL可能會拋出一些異常
通過捕獲SQLException對象來進行異常的處理
下層Driver API層負責與具體的數據庫建立連接,一般而言下層的driver都是由數據庫廠商提供的。
安裝JDBC:
JDBC已經集成在JDK中,可以直接引用,無需安裝。
需要安裝的是數據庫的驅動程序
對於MySQL數據庫:
登陸Oracle賬號,下載jar包,添加到java web project中。
https://dev.mysql.com/downloads/connector/ 下載Connector/J 5.1.43
構建完整的Java Web程序:
構建步驟:
裝載驅動程序:向DriverManager註冊一個驅動程序Driver
建立數據庫連接:DriverManager.getConnection()
執行SQL語句:Statement.execute...()
獲取執行結果:ResultSet對象
清理環境:
使用JDBC之前,需要準備一個數據庫的後端實例,創建一個user表
Java開發工程師(Web方向) - 03.數據庫開發 - 第1章.JDBC