代碼實作:
功能:
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>