Java學習:JDBC各類詳解


 JDBC各個類詳解

代碼實現:

//1.導入驅動jar包
//2.注冊驅動
Class.forName("com.mysql.jdbc.Driver");
//3.獲取數據庫連對象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3","root","password");
//4.定義sql語句
String sql = "update account set balance = 500 where id = 1";
//5.獲取執行sql語句的對象 Statement
Statement stmt = conn.createStatement();
//6.執行sql
int count = stmt.executeUpdate(sql);
//7.處理結果
System.out.println(count);
//8.釋放結果
stmt.close();
conn.close();

詳解各個對象

1. DriverManager:驅動管理對象

功能:

1.注冊驅動:告訴程序該使用哪一個數據庫驅動jar

  • static void registerDriver(Driver driver):注冊與給定的驅動程序DriverManager
寫代碼使用:Class.forName("com.mysql.jdbc.Driver");

注意:mysql5之后的驅動jar包可以省略注冊驅動的步驟。

2.獲取數據庫連接

*方法:static Connection getConnection(String url, String user, String password)
*參數:
  *url:指定連接的路徑

  • 語法:jdbc:mysql://ip地址(域名):端口號/數據庫名稱
  • 例子:jdbc:mysql://localhost:3306/db3
  • 細節:如果連接的是本機mysql服務器,並且mysql服務默認端口是3306,則url可以簡寫為:jdbc:mysql:///數據庫名稱

  *user:用戶名
  *password:密碼

2. Connection:數據庫連接對象

功能:

1.獲取執行sql語句的對象

Statement createStatement()
PreParedStatement perpareStatement(String sql)

2.管理事務:

  • 開啟事務:setAutoCommit(boolean autoCommit):調用該方法設置參數為false,即開啟事務
  • 提交事務:commit()
  • 回滾事務:rollback()

3. Statement:執行sql的對象

執行sql
1.Boolean execute(String sql ):可以執行任意的sql (了解)
2.int executeUpdate(String sql ):執行DML(insert,update,delete)語句、DDL(create,later,drop)語句

  • 返回值:影響的行數,可以通過這個影響的行數判斷DML語句是否執行成功 返回值>0的則執行成功,反之,則失敗

3.ResultSet executeQuery(String sql) :執行DQL(select)語句

4. ResultSet:結果集對象,封裝查詢結果

1.boolean next():游標向下移動一行,判斷當前行是否是最后一行末尾(是否有數據),如果是,則返回false,如果不是則返回true
2.getXxx(參數):獲取數據

  • Xxx:代表數據類型 如:int getInt(),String getString()
  • 參數:
1.int:代表列的編號,從1開始 如:getString(1)
2.string:代表列名稱。 如:getDouble("balance")\

注意:
使用步驟:

  1. 游標向下移動一行
  2. 判斷是否有數據
  3. 獲取數據

5. PreparedStatement:執行sql的對象

1.SQL注入問題:在拼接sql時,有一些sql的特殊關鍵字參與字符串的拼接。會造成安全性問題

  • 1.輸入用戶(隨便),輸入密碼:a' or 'a' = 'a
  • 2.sql:select * from user where username = 'shhshdcainiao' and password = ' a' or 'a' = 'a '

2.解決sql注入問題:使用PreparedStatement對象來解決
3.預編譯的SQL:參數使用   作為占位符
4.步驟:

  • 1.導入驅動jar包 mysql-connector-java-5.1.37-bin.jar
  • 2.注入驅動
  • 3.獲取數據庫連對象 Connection
  • 4.定義sql
  • 5.獲取執行sql語句的對象 Statement
  • 6.執行sql ,接受返回結果
  • 7.處理結果
  • 8.釋放資源

5.注意:后期都會使用 PreparedStatement來完成增刪改查的所有操作

  • 1.可以防止SQL注入
  • 2.效率更高

JDBC控制事物

1.事物:一個包含多個步驟的業務操作。如果這個業務操作被事物管理,則這多個步驟要么同時成功,要么同時失敗
2.操作

  • 1.開啟事務
  • 2.提交事務:
  • 3.回滾事務:

3.使用Connection對象來管理事務
開啟事務:setAutoCommit(boolean autoCommit):調用該方法設置參數為false,即開啟事務

  • 在執行sql之前開啟事務

提交事務:commit()

  • 當所有sql的都執行完提交事務

回滾事務:rollback()

  • 在catch中回滾事務

抽取JDBC工具類:JDBCUtils

目的:簡化書寫
分析:

  • 1.注冊驅動來抽取
  • 2.抽取一個方法獲取連接對象

需求:不想傳遞參數(麻煩),還得保證工具類的通用性。
解決:配置文件

jdbc.properties
url =
user = 
password =
  • 3.抽取一個方法釋放資源

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM