JDBC:
Java DataBase Connective
Java連接資料庫的規范 - 介面
java.sql -> JDBC 規范相關的介面,類
實作類: 各個資料庫廠商來提供
1.Connection - 連接
a.引入jar包
mysql-connector-java-5.1.8-bin.jar
推薦資料庫版本: 5.5 5.7 5.x
mysql-connector-java-8.0.16.jar
推薦資料庫版本: 8.x
b.加載驅動 - 類
Class.forName(“驅動類名”);
oracle: oracle.jdbc.driver.OracleDriver
mysql: com.mysql.jdbc.Driver
c.獲得連接
DriverManager.getConnection(url, username, password);
url: jdbc:mysql://ip:port/database?serverTimezone=GMT
username: 賬號
password: 密碼
d.獲得執行SQL陳述句的Statement物件
e.執行SQL, 獲得結果 boolean int ResultSet
f.釋放資源
登錄案例:
輸入用戶名: 隨意
輸入密碼: a’ or ‘1’='1
形成的SQL陳述句:
select * from user
where name = ‘111’ and password = ‘a’
or ‘1’=‘1’
通過字串的拼接, 將整個SQL陳述句的語意結構改變了, 從而達到一定目的
稱之為SQL注入 -> 不安全的語法, 一定要避免
PreparedStatement extends Statement
預編譯
sql就是一個半成品 ?-占位符
select * from user where name = ? and password = ?
執行sql陳述句:
給占位符傳參
1.有效防止SQL注入
2.當多次執行相同的/相似的SQL, 只需要預編譯一次
而Statement需要編譯多次, PreparedStatement效率更高
JDBC中的事務, 系結在連接物件上的, 都是默認自動提交
1.設定事務手動提交
conn.setAutoCommit(false)
2.代碼正常結束, 提交事務
conn.commit();
3.代碼出現例外, 回滾事務
conn.rollback()
4.了解:
保存事務結點 SavePoint a = conn.setSavePoint();
回滾到指定的結點 conn.rollback(a);
復習:
類加載:將類的資訊從位元組碼檔案中讀取到記憶體的方法區中
什么時候類加載:
1.第一次創建物件
2.第一次使用靜態方法,靜態變數
3.使用子類會加載父類
4.類名.class
5.Class.forName(“類的全限定類名”) java.util.List java.lang.String

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/90718.html
標籤:其他
