官术网_书友最值得收藏!

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方法:

主站蜘蛛池模板: 曲阳县| 镇康县| 斗六市| 广平县| 商丘市| 南川市| 乌鲁木齐市| 蓬安县| 襄垣县| 吉首市| 唐海县| 石楼县| 孝义市| 阿拉善右旗| 浮梁县| 泗洪县| 逊克县| 马鞍山市| 永定县| 赣州市| 延津县| 黔西县| 绥江县| 阳西县| 中江县| 景德镇市| 徐州市| 宁乡县| 东阿县| 河西区| 德钦县| 文成县| 嘉鱼县| 双城市| 高要市| 嘉定区| 修水县| 华坪县| 布尔津县| 湘潭市| 沧源|