概念:
JDBC 就是使用Java語言操作關系型數據庫的一套API 全稱:( Java DataBase Connectivity ) Java 數據庫連接。
JDBC的本質:
- 官方(sun公司)定義的一套操作所有關系型數據庫的規則,即 接口
- 各個數據庫廠商去實現這套接口,提供數據庫驅動jar包
- 我們可以使用這套接口(JDBC)編程,真正執行的代碼是驅動 jar包中的實現類 ?
Java操作數據庫的流程:
?
編寫代碼的步驟:
//1.注冊驅動Class.forName("com.mysql.jdbc.Driver");//2.獲取連接String url= "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";String username= "root";String password= "Yuan1001*";Connection conn = DriverManager.getConnection(url, username, password);//3.定義sql語句String sql="update account set money=2000 where id=1";//4.獲取執行sql的對象StatementStatement state = conn.createStatement();//5.執行sqlint count = state.executeUpdate(sql);//受影響的行數//6.處理結果System.out.println(count);//7.釋放資源state.close();conn.close();
三、JDBC API詳解?
?
3.1DriverManager?
url 連接路徑:
語法:jdbc:mysql://ip地址(域名):端口號/數據庫名稱?參 數鍵值對1&參數鍵值對2…
示例:jdbc:mysql://127.0.0.1:3306/db1
==細節:== 如果連接的是本機mysql服務器,并且mysql服務默 認端口是3306,則url可以簡寫為:jdbc:mysql:///數 據庫名稱?參數鍵值對
配置 useSSL=false 參數,禁用安全連接方式,解決 警示提示?
user:用戶名
password:密碼
3.2Connection
Connection(數據庫連接對象)的作用:
1.獲取執行SQL的 對象
2.管理事物
3.2.1獲取執行SQL的 對象
普通執行SQL對象:
預編譯SQL的執行SQL對象:防止SQL注入
執行存儲過程的對象:
?
3.2.2事務管理
- MySQL事務管理:
- JDBC事物管理:
//1. 注冊驅動//Class.forName("com.mysql.jdbc.Driver");//2. 獲取連接:如果連接的是本機mysql并且端口是默認
的 3306 可以簡化書寫String url = "jdbc:mysql:///db1?
useSSL=false";String username = "root";String password = "1234";Connection conn =
DriverManager.getConnection(url, username,
password);//3. 定義sql ? ? ? String sql1 = "update account set money =
3000 where id = 1";String sql2 = "update account set money =
3000 where id = 2";//4. 獲取執行sql的對象 StatementStatement stmt = conn.createStatement();try {// ============開啟事務==========conn.setAutoCommit(false);//5. 執行sqlint count1 = stmt.executeUpdate(sql1);//
受影響的行數//6. 處理結果System.out.println(count1);int i = 3/0;//5. 執行sqlint count2 = stmt.executeUpdate(sql2);//
受影響的行數//6. 處理結果System.out.println(count2);// ============提交事務==========//程序運行到此處,說明沒有出現任何問題,則需求提
交事務conn.commit();} catch (Exception e) {// ============回滾事務==========//程序在出現異常時會執行到這個地方,此時就需要回
滾事務conn.rollback();e.printStackTrace();}//7. 釋放資源stmt.close();conn.close();
}
}
3.3Statement?
Statement對象的作用就是用來執行SQL語句
3.3.1 執行SQL語句
?
3.3.2代碼實現?
DML語句
/*** 執行DML語句* @throws Exception*/
@Test
public void testDML() throws ?Exception {//1. 注冊驅動//Class.forName("com.mysql.jdbc.Driver");//2. 獲取連接:如果連接的是本機mysql并且端口是默認的
3306 可以簡化書寫String url = "jdbc:mysql:///db1?
useSSL=false";String username = "root";執行DDL語句String password = "1234";Connection conn =
DriverManager.getConnection(url, username,
password);//3. 定義sqlString sql = "update account set money = 3000
where id = 1";//4. 獲取執行sql的對象 StatementStatement stmt = conn.createStatement();//5. 執行sqlint count = stmt.executeUpdate(sql);//執行完
DML語句,受影響的行數//6. 處理結果//System.out.println(count);if(count > 0){System.out.println("修改成功~");}else{System.out.println("修改失敗~");}//7. 釋放資源stmt.close();conn.close();
}
?3.4ResultSet
ResultSet(結果集對象)的作用:
1.封裝DQL查詢語句的結果
?
獲取查詢結果
?