- Java EE程序設計與開發實踐教程
- 馮志林編著
- 967字
- 2021-10-27 17:05:28
4.2 JDBC工作流程

第4章任務2
1.加載數據庫驅動程序
使用Class.forName(驅動程序名)加載驅動程序,其中驅動程序名是各種數據庫Driver接口,如MySQL:com.mysql.jdbc.Driver。如果加載成功,則可以執行后續操作;如果加載失敗,則拋出異常。
表4-1 常用數據庫的驅動程序名及URL

2.獲得數據連接
加載驅動類后,就可以與數據庫建立連接。通過DriverManager.getConnection(url, username,password)可以獲得數據連接對象。例如:

3.執行SQL語句
執行SQL語句是通過語句對象(Statement)完成的。語句對象有三種:Statement(執行簡單的、無參數的SQL語句)、PreparedStatement(預編譯語句對象)、CallableStatement(用來執行存儲過程)。
(1)Statement對象的使用
該對象可以通過Connection對象的createStatement方法建立。該對象的主要方法有:
● executeQuery方法:執行查詢語句(select),將查到的記錄以結果集(ResultSet)的方式返回。
● executeUpdate方法:執行insert、update、delete操作。
● execute方法:執行查詢語句(可以返回結果集,也可以執行更新操作)。
(2)PreparedStatement對象的使用
該對象包含已編譯的SQL語句。包含在PreparedStatement對象中的SQL語句可具有一個或多個IN參數。IN參數的值在SQL語句創建時未被指定。相反的,該語句為每個IN參數保留一個問號?作為占位符。每個問號的值必須在該語句執行之前,通過適當的setXXX方法來提供。
由于PreparedStatement對象已預編譯過,所以其執行速度要快于Statement對象。因此,多次執行的SQL語句經常創建為PreparedStatement對象,以提高效率。
(3)CallableStatement對象的使用
該對象為所有的DBMS提供了一種以標準形式調用“存儲過程”的方法。“存儲過程”存在數據庫中,在JDBC中調用“存儲過程”的語法如下。
● 不返回結果且帶參數的存儲過程的調用語法為:{call過程名[(?, ?, ...)]}。
● 返回結果且帶參數的存儲過程的調用語法為:{?=call過程名[(?, ?, ...)]}。
● 不返回結果且不帶參數的存儲過程的調用語法為:{call過程名}。
方括號表示其間的內容是可選項。
4.處理結果集
一個Statement對象在打開后可以多次調用executeQuery(string sql)、executeUpdate(string sql)、execute(string sql)方法來執行SQL語句,與數據庫管理系統進行交互。
ResultSet對象完全依賴于Statement對象和Connection對象。每次執行SQL語句時,都會用新的結果重寫結果集。
結果集讀取數據的方法主要是ResultSet對象的getXXX(int)或getXXX(String),其中XXX代表某種數據類型,如Integer、Float、String、Date、Boolean等,其參數可以是整型,表示第幾列(注意是從1開始的),也可以是字符串形式的列名,該方法的返回值是對應的XXX類型的值。
5.關閉連接
在處理完對數據庫的操作后,一定要將Connection對象關閉,以釋放JDBC占用的系統資源。在不關閉Connection對象的前提下再次用DriverManager靜態類初始化新的Connection對象,會產生系統錯誤。
關閉連接使用Connection對象的close方法:

- Go Web編程
- 深入淺出數據科學:Python編程
- Learning Chef
- JavaScript Unlocked
- Java編程指南:基礎知識、類庫應用及案例設計
- oreilly精品圖書:軟件開發者路線圖叢書(共8冊)
- Python高效開發實戰:Django、Tornado、Flask、Twisted(第2版)
- Bootstrap 4:Responsive Web Design
- Hands-On Natural Language Processing with Python
- Getting Started with Laravel 4
- Mastering Unity 2D Game Development(Second Edition)
- Building Android UIs with Custom Views
- Illustrator CC平面設計實戰從入門到精通(視頻自學全彩版)
- TypeScript 2.x By Example
- Mastering XenApp?