天天看點

Java學習:JDBC各類詳解

代碼實作:

功能:

1.注冊驅動:告訴程式該使用哪一個資料庫驅動jar

static void registerDriver(Driver driver):注冊與給定的驅動程式DriverManager

注意: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:密碼

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

2.管理事務:

開啟事務:setAutoCommit(boolean autoCommit):調用該方法設定參數為false,即開啟事務

送出事務:commit()

復原事務:rollback()

執行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)語句

1.boolean next():遊标向下移動一行,判斷目前行是否是最後一行末尾(是否有資料),如果是,則傳回false,如果不是則傳回true

2.getXxx(參數):擷取資料

Xxx:代表資料類型 如:int getInt(),String getString()

參數:

注意:

使用步驟:

遊标向下移動一行

判斷是否有資料

擷取資料

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.效率更高

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

2.操作:

1.開啟事務

2.送出事務:

3.復原事務:

3.使用Connection對象來管理事務

在執行sql之前開啟事務

當所有sql的都執行完送出事務

在catch中復原事務

目的:簡化書寫

分析:

1.注冊驅動來抽取

2.抽取一個方法擷取連接配接對象

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

解決:配置檔案

3.抽取一個方法釋放資源

歸檔:我的知識棧:目錄(更新中...)

作者:菜鳥-傳奇

<b> </b>