1. 程式人生 > >JDBC—DAO

JDBC—DAO

connect con cut aps ont es2017 更新 底層 面向接口

一、JDBC

什麽是JDBC?
JAVA DataBase Connectivity (Java 數據庫連接技術)
由Java編寫的一組類和接口組成,為各種類型的數據庫提供
統一的訪問。
JDBC的作用?
一種將程序數據持久化到數據庫的機制。
JDBC的組成?
1:JDBC API 主要做三件事:
與數據庫建立連接/發送SQL語句/處理結果
2:JDBC Driver Manager 驅動程序管理器
3:JDBC驅動 不同的數據庫需要不同的驅動,這些驅動都實現
了JDBC API中的各種接口。

技術分享圖片

JDBC訪問數據庫的步驟?
1:加載JDBC驅動
2:與數據庫建立連接
3:發送SQL語句並得到返回的結果
4:處理返回結果
(Structured Query Language)

技術分享圖片

兩種常用的驅動方式:
1:JDBC-ODBC橋連方式連接數據庫
2:純Java方式連接數據庫
------------------------------
常見的連接數據庫錯誤:
1、驅動名錯誤
2、數據連接字符串,數據庫用戶名,輸錯
3、數據庫操作結束,沒有關閉數據庫連接,占用系統資源
4、關閉數據庫連接的語句沒放到finally語句中,可能不被執行

  1. (一)JDBC-ODBC連接數據庫

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

1、在不需要ResultSet對象,Statement對象,Connection對象的時候,顯示地關閉它們
public void close() throws SQLException
2、要按照,先ResultSet結果,後Statement,最後
Connectiond的順序關閉資源。因為ResultSet是通過Statement執行SQL命令得到的,而Statement是需要在創建連接之後才可以
使用的。
3、用戶如果不關閉ResultSet,當Statement關閉,重新執行或
用於多從結果序列中獲得下一個結果時,該ResultSet將自動關閉

  1. (二)純JAVA方式連接數據庫

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

(三)常用的5個對象

Connection,DriverManager(略,見用例)

1、Statement常用方法

技術分享圖片

2、ResultSet常用方法

技術分享圖片

3、PreparedStatement的介紹

a : PreparedStatement接口繼承自Statement接口:(優點):

1.提高了代碼的可讀和可維護性

2.提高了SQL語句的執行性能

3.提高了安全性( or ‘1‘=‘1‘ 註入拼接攻擊)

b : PreparedStatement接口的使用

使用PreparedStatement的execute(String sql)方法執行sql語句如果是查詢的話返回true,如果是更新或插入的話就返回false所以執行插入或更新語句應該使用executeUpdate():

(1) 返回SQL 數據操作語言 (DML) 語句的行數

(2) 對於無返回內容的 SQL 語句,返回 0。

c : statement和preparedStatement的區別:

1.statement每次執行sql語句,相關數據庫都要執行拼接sql語句的編譯,preparedstatement是預編譯的,代碼可重用支持批處理。使用 Statement 對象。在對數據庫只執行一次性存取的時侯,用 Statement 對象進行處理。PreparedStatement 對象的開銷比Statement大,對於一次性操作並不會帶來額外的好處。

2: statement需要拼接sql語句,preparedstatement的sql語句可以用變量替換,達到代碼重用的好處

3.安全性:傳遞給Statement的字符串參數會自動被驅動器忽略。傳遞給PreparedStatement對象的參數可以被強制進行類型轉換,使開發人員可以確保在插入或查詢數據時與底層的數據庫格式匹配。

d : 使用PreparedStatement操作數據庫的三步驟:

1.創建PreparedStatement對象

2.設置每個輸入參數的值

3.執行SQL語句

PreparedStatement用例

技術分享圖片

JDBC用例:

技術分享圖片

技術分享圖片

二、JDBC—DAO模式

什麽是DAO?
1:Data Access Objects :數據存儲對象:
2:DAO指位於業務邏輯和持久化數據之間實現對持久化數據的訪
問,也就是將數據庫操作都封裝起來,對外提供相應的接口
3:[采用面向接口,有利於代碼的,低耦合高類聚原則]
DAO的優勢?
1:隔離業務邏輯代碼和數據訪問代碼
2:隔離不同數據庫實現
DAO的組成?
1:DAO接口 把對數據庫的所有操作定義為抽象方法
2:DAO實現類 不同數據庫給出的DAO接口定義方法的具體實現
3:實體類 用於存放和傳輸對象數據
4:數據庫連接和關閉工具
避免了數據庫連接和關閉代碼的重復

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

JDBC—DAO