MySQL數據庫干貨_24——JDBC概述及JDBC中常用的類與接口
JDBC概述
數據的持久化
-
持久化(persistence):將內存中的數據保存到可永久保存的存儲設備中(如磁盤)。
-
持久化的主要應用是將內存中的數據存儲在關系型數據庫中,當然也可以存儲在磁盤文件、XML數據文件中。
什么是 JDBC
- JDBC(Java DataBase Connectivity)java 數據庫連接
- 是
JavaEE平臺下的技術規范 - 定義了在 Java 語言中連接數據庫,執行 SQL 語句的標準 API
- 可以為多種關系數據庫提供統一訪問
什么是數據庫驅動程序
- 數據庫驅動就是直接操作數據庫的一個程序
- 不同數據產品的數據庫驅動名字有差異
- 在程序中需要依賴數據庫驅動來完成對數據庫的操作
Java中訪問數據庫技術
- 基于JDBC標準訪問數據庫
- 使用第三方ORM 框架,如Hibernate, Mybatis 等訪問數據庫
程序操作數據庫流程
如果沒有JDBC,那么Java程序訪問數據庫時是這樣的:
有了JDBC,Java程序訪問數據庫時是這樣的:
JBDC中常用的類與接口
Driver 接口
Driver 接口的作用是來定義數據庫驅動對象應該具備的一些能力。比如與數據庫建立連接的方法的定義,該接口是提供給數據庫廠商使用的,所有支持 java 語言連接的數據庫都實現了該接口,實現該接口的類我們稱之為數據庫驅動類。
DriverManager 類
DriverManager是驅動程序管理器,是負責管理數據庫驅動程序的。驅動注冊以后,會保存在DriverManager中的已注冊列表中。 DriverManager 通過實例化的數據庫驅動對象,能夠建立應用程序與數據庫之間建立連接。并返回 Connection 接口類型的數據庫連接對象。
-
getConnection(String jdbcUrl, String user, String password)該方法通過訪問數據庫的 url、用戶以及密碼,返回對應的數據庫的 Connection 對象。
-
JDBC URL與數據庫連接時,用來連接到指定數據庫標識符。在 URL 中包括了該數據庫的類型、 地址、端口、庫名稱等信息。不同品牌數據庫的連接 URL 不同。
-
連接 MySql 數據庫:
Connection conn = DriverManager.getConnection("jdbc:mysql://host:port/database", "user", "password"); -
連接 Oracle 數據庫:
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@host:port:database", "user", "password");
-
Connection 接口
Connection 是數據庫的連接(會話)對象。對數據庫的一切操作都是在這個連接基礎之上進行的,我們可以通過該對象執行 sql 語句并返回結果。
常用方法
-
createStatement()創建向數據庫發送 sql 的 Statement 接口類型的對象。
-
preparedStatement(sql)創建向數據庫發送預編譯 sql 的 PreparedSatement 接口類型的對象。
-
setAutoCommit(boolean autoCommit)設置事務是否自動提交。
-
commit()在鏈接上提交事務。
-
rollback()在此鏈接上回滾事務。
Statement 接口
用于執行靜態 SQL 語句并返回它所生成結果的對象。 由 createStatement 創建,用于發送簡單的 SQL 語句(不支持動態綁定)。
常用方法
-
execute(String sql)執行參數中的 SQL,返回是否有結果集。
-
executeQuery(String sql)運行 select 語句,返回 ResultSet 結果集。
-
executeUpdate(String sql)運行 insert/update/delete 操作,返回更新的行數。
-
addBatch(String sql)把多條 sql 語句放到一個批處理中。
-
executeBatch()向數據庫發送一批 sql 語句執行。
PreparedStatement接口
繼承自 Statement 接口,由 preparedStatement 創建,用于發送含有一個或多個參數的 SQL 語句。PreparedStatement 對象比 Statement 對象的效率更高,由于實現了動態的參數綁定,所以可以防止 SQL 注入,所以我們一般都使用 PreparedStatement。
常用方法
-
addBatch()把當前 sql 語句加入到一個批處理中。
-
execute()執行當前 SQL,返回個 boolean 值
-
executeUpdate()運行 insert/update/delete 操作,返回更新的行數。
-
executeQuery()執行當前的查詢,返回一個結果集對象
-
setDate(int parameterIndex, Date x)向當前SQL語句中的指定位置綁定一個java.sql.Date值
-
setDouble(int parameterIndex, double x)向當前 SQL 語句中的指定位置綁定一個 double值
-
setFloat(int parameterIndex, float x)向當前 SQL 語句中的指定位置綁定一個 float 值
-
setInt(int parameterIndex, int x)向當前 SQL 語句中的指定位置綁定一個 int 值
-
setString(int parameterIndex, String x)
向當前 SQL 語句中的指定位置綁定一個 String 值
ResultSet 接口
ResultSet 用來暫時存放數據庫查詢操作獲得結果集。
常用方法
-
getString(int index)、getString(String columnName)獲得在數據庫里是 varchar、char 等類型的數據對象。
-
getFloat(int index)、getFloat(String columnName)獲得在數據庫里是 Float 類型的數據對象。
-
getDate(int index)、getDate(String columnName)獲得在數據庫里是 Date 類型的數據。
-
getBoolean(int index)、getBoolean(String columnName)獲得在數據庫里是 Boolean 類型的數據。
-
getObject(int index)、getObject(String columnName)獲取在數據庫里任意類型的數據。
浙公網安備 33010602011771號