JDBC 就是用 JAVA 語言操作關系型資料庫的一套 API
全稱:(Java DataBase Connectivity) Java 資料庫連接
快速入門
寫 JDBC 前需匯入驅動 jar 包(以 mysql 資料庫為例)
//注冊驅動(mysql5 之后的版本此步可省略)
Class.forName("com.mysq.jdbc.Driver");
//獲取連接,Java代碼需要發送SQL給MySQL服務端,就需要先建立連接
Connection conn = DriverManager.getConnection(url, username, password);
//定義SQL陳述句
String sql = “update…” ;
//獲取執行SQL物件,執行SQL陳述句需要SQL執行物件,而這個執行物件就是Statement物件
Statement stmt = conn.createStatement();
//執行SQL
stmt.executeUpdate(sql);
//處理結果
...;
//釋放資源
stmt.close();
conn.close();
API 詳解
1.DriverManager
-
注冊驅動
DriverManager.registerDrever();Class.forName() 底層便是通過呼叫該方法來實作驅動的注冊
-
獲取資料庫連接
static Connection getConnection(String url, String user, String password) 嘗試建立與給定資料庫URL的連接 引數說明:
-
url : 連接路徑
語法:jdbc:mysql://ip地址(域名):埠號/資料庫名稱?引數鍵值對1&引數鍵值對2…
示例:jdbc:mysql://127.0.0.1:3306/db1
細節:
-
如果連接的是本機mysql服務器,并且mysql服務默認埠是3306,則url可以簡寫為:jdbc:mysql:///資料庫名稱?引數鍵值對
-
配置 useSSL=false 引數,禁用安全連接方式,解決警告提示
-
-
user :用戶名
-
poassword :密碼
-
2.Connection
作用:獲取執行 SQL 的物件,管理事務
-
獲取執行物件
-
普通執行SQL物件
Statement createStatement()快速入門中就是通過該方法獲取的執行物件
-
預編譯SQL的執行SQL物件:防止SQL注入
PreparedStatement prepareStatement(sql)通過這種方式獲取的
PreparedStatementSQL陳述句執行物件可以防止SQL注入 -
執行存盤程序的物件
CallableStatement prepareCall(sql)通過這種方式獲取的
CallableStatement執行物件是用來執行存盤程序的
-
-
事務管理
-
開啟事務
void setAutoCommit(boolean autoCommit) 將此連接的自動提交模式設定為給定狀態 參與autoCommit 表示是否自動提交事務,true表示自動提交事務,false表示手動提交事務,而開啟事務需要將該引數設為為false,
-
提交事務
void commit() 提交事務,并釋放此 Connection物件當前持有的所有資料庫鎖 -
回滾事務
void rollback() 回滾事務,并釋放此 Connection物件當前持有的所有資料庫鎖 -
例:
try { // ============開啟事務========== conn.setAutoCommit(false); //5. 執行sql int count1 = stmt.executeUpdate(sql1);//受影響的行數 //6. 處理結果 System.out.println(count1); int i = 3/0; //5. 執行sql int count2 = stmt.executeUpdate(sql2);//受影響的行數 //6. 處理結果 System.out.println(count2); // ============提交事務========== //程式運行到此處,說明沒有出現任何問題,則需求提交事務 conn.commit(); } catch (Exception e) { // ============回滾事務========== //程式在出現例外時會執行到這個地方,此時就需要回滾事務 conn.rollback(); e.printStackTrace(); }
-
3.Statement
Statement物件的作用就是用來執行SQL陳述句,而針對不同型別的SQL陳述句使用的方法也不一樣
-
執行DDL、DML陳述句
int executeUpdate(String sql) 執行給定的SQL陳述句 -
執行DQL陳述句
ResultSet executeQuery(String sql) 執行給定的SQL陳述句,回傳單個ResultSet物件
4.ResultSet
作用:封裝了SQL查詢陳述句的結果
注意:使用后需釋放資源
而執行了DQL陳述句后就會回傳該物件,對應執行DQL陳述句的方法如下:
ResultSet executeQuery(sql);
要從 ResultSet 物件中獲取我們想要的資料,ResultSet 物件提供了操作查詢結果資料的方法
boolean next()
- 將游標從當前位置向前移動一行
- 判斷當前行是否為有效行
xxx getXxx(引數)
xxx : 資料型別;如: int getInt(列的編號) ;String getString(列的名稱)
5.PreparedStatement
作用:通過將敏感字符進行轉義預防SQL注入問題
-
獲取 PreparedStatement 物件
// SQL陳述句中的引數值,使用?占位符替代 String sql = "select * from user where username = ? and password = ?"; // 通過Connection物件獲取,并傳入對應的sql陳述句 PreparedStatement pstmt = conn.prepareStatement(sql); -
為設定為 ? 引數賦值
PreparedStatement物件:setXxx(?的位置編號<從1 開始>,?的值);
-
執行SQL陳述句
executeUpdate(); 執行DDL陳述句和DML陳述句 executeQuery(); 執行DQL陳述句 注意:呼叫這兩個方法時不需要傳遞SQL陳述句,因為獲取SQL陳述句執行物件時已經對SQL陳述句進行預編譯了,
資料庫連接池
負責分配、管理資料庫連接(Connection),它允許應用程式重復使用一個現有的資料庫連接,而不是再重新建立一個
-
標準介面:DataSource
官方(SUN) 提供的資料庫連接池標準介面,由第三方組織實作此介面,該介面提供了獲取連接的功能:
Connection getConnection()那么以后就不需要通過
DriverManager物件獲取Connection物件,而是通過連接池(DataSource)獲取Connection物件,常用的資料庫連接池:Druid(德魯伊)
-
Druid連接池是阿里巴巴開源的資料庫連接池專案
-
功能強大,性能優秀,是Java語言最好的資料庫連接池之一
-
-
Driud使用
public static void main(String[] args) throws Exception { //1.匯入jar包 //2.定義組態檔 //3. 加載組態檔 Properties prop = new Properties(); prop.load(new FileInputStream("組態檔路徑")); //4. 獲取連接池物件 DataSource dataSource = DruidDataSourceFactory.createDataSource(prop); //5. 獲取資料庫連接 Connection Connection connection = dataSource.getConnection(); //獲取到了連接后就可以繼續做其他操作了 }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/548961.html
標籤:其他
上一篇:Java 8 中需要知道的4個函式式介面-Function、Consumer、Supplier、Predicate
