當前位置:
首頁 > 最新 > 哥哥面前一條彎彎的河-「JDBC」連接資料庫

哥哥面前一條彎彎的河-「JDBC」連接資料庫

閱讀文本大概需要 6 分鐘。

1 JDBC概述

JDBC(Java Data Base Connectivity) 它是Sun公司提供的一套操作資料庫的標準規範。

通過Java程序調用Sql語句對資料庫進行CRUD操作。

簡單地說,JDBC 可做三件事:與資料庫建立連接、發送操作資料庫的語句並處理結果

2 JDBC原理

Java 公司制定一整套 介面

資料庫公司 用Java語言去實現了 介面

Java開發工程師 通過介面 和 實現類 操作資料庫

JDBC的使用,就是學習 JDBC API

實現:Java -- sun 定義的一些操作介面 ,資料庫廠商 提供驅動(介面的實現)

JDBC API的介面

1、DriverManager 驅動管理 (驅動 資料庫公司的實現類 .jar)

2、Connection 資料庫連接會話 用於獲取資料庫連接

3、Statement 數據通信的聲明 用於執行SQL語句

PreparedStatement 預編譯的聲明。(提前編譯,效率高,安全)

4、ResultSet 結果集 (查詢到的數據集合)

3 JDBC 基本使用步驟:

// 先來介紹下操作資料庫的步驟:

1、為我們的項目 添加驅動包 .jar

2、註冊 載入 驅動

3、用過 DriverManager 獲取資料庫連接 Connection

4、準備要執行的 sql 字元串,獲取資料庫的會話 Statement

5、通過 Statement 執行 sql 語句

6、操作 資料庫結果集

7、關閉資源

1. 四大參數準備

驅動名:com.mysql.jdbc.Driver

獲取連接 Connection 需要有資料庫的地址用戶名密碼

資料庫地址:jdbc:mysql://localhost:3306/exam(資料庫名)

URL 比較複雜

JDBC規定url的格式由三部分組成,每個部分中間使用冒號分隔。

第一部分是jdbc,這是固定的;

第二部分是資料庫名稱,那麼連接mysql資料庫,第二部分當然是mysql了;

第三部分是由資料庫廠商規定的,我們需要了解每個資料庫廠商的要求,

mysql的第三部分分別由資料庫伺服器的IP地址(localhost)、埠號(3306),以及DATABASE名稱(exam) 組成。

Oracle: jdbc:oracle:thin:@主機:埠:資料庫名

例如: jdbc:oracle:thin:@localhost:1521:orcl

MySQL: jdbc:mysql://主機:埠/資料庫名

例如: jdbc:mysql://localhost:3306/exam

2. 註冊驅動

class.forName 註冊驅動用到了反射。

3. 獲取鏈接

傳入準備好的參數

Connection con=DriverManager.getConnection(url, user, password);

4. 創建statement對象 操作sql語言

Statement st=con.createStatement();

5. 創建ResultSet保存結果

String sql="select * from emp";

re=st.executeQuery(sql);

6. 遍歷採用一個迭代器

while(re.next()){ … }

整體參考代碼:

是的,這裡的代碼很長的,『雜訊』太多了, 把業務代碼全給淹沒了。我們梳理一下核心業務:

指定資料庫連接參數

打開資料庫連接

聲明SQL語句

預編譯並執行SQL語句

遍歷查詢結果

處理每一次遍歷操作

處理拋出的任何異常

處理事務

關閉資料庫連接

可現在,為了正確的打開和關閉你定義的Connection,Statement,ResultSet 需要花很多功夫,再加上那些異常處理。一個 30 多行的程序, 真正做事的也就那麼幾行 而已。難怪有人會說我們 Java 繁瑣了,這些瑣碎代碼真的太煩人了。

不過好在我們還可以封裝工具類JDBCUtils。提供獲取連接對象的方法,從而達到代碼的重複利用。 至於如果封裝工具類 那就是我們下次的內容了。。。

後期更多優選推文,各種資料、分享猛料放出,關注「阿凱不錯」公眾號,獲取實時動態:

大家還有什麼需求,也可以後台留言給我,公眾號上還有其他學習資源哦....

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員阿凱 的精彩文章:

什麼轉賬失敗了?那可能是「資料庫事務」沒有處理好

TAG:程序員阿凱 |