Java學習筆記-Java基礎21(JDBC高階程式設計)
1.PreparedStatement:繼承自Statement,執行的SQL語句是預編譯的,以“?”為佔位符,在執行前利用合適的set方法提供“?”的實際內容。它的三種execute方法都不需要引數,執行起來比Statement快。PreparedStatement可以重用SQL,具有快取功能,可以實現批量處理和防止SQL注入攻擊。
1)建立連線
2)編寫SQL語句
3)建立PreparedStatement物件
4)補充SQL語句
5)執行SQL語句
6)處理結果集
7)關閉連線
---PS1:DBUtil2是自己寫的一個類,裡面封裝了獲取連線和關閉連線的方法
---PS2:PreparedStatement的三個執行方法遵循的原則與Statement一樣,只是不需要引數
2.元資料:從查詢結果集中獲取關於記錄的其他資訊
---ResultSetMetaData getMetaData();
3.可滾動結果集:常用的ResultSet獲取的結果集,只能通過next方法獲取下一條記錄,不能反向移動,不能跳行。可滾動結果集指標可以隨意滾動到任一行,甚至可以感知資料變化。一般不會用
---PS1:感知資料變化的意思是在遍歷結果集的過程中可以修改記錄,然後資料庫會同步改變
---PS2:resultSetType和resultSetConcurrency的取值都是ResultSet的設定好的常量
4.事務:資料庫中保證資料可靠的機制,JDBC是預設提交事務的。事務特性ACID:
1)原子性(Atomicity):事務必須是原子單位,資料操作要麼全部執行,要麼全部不執行
2)一致性(Consistency):事務在完成時,資料都保持一致的狀態
3)隔離性(Isolation):併發事務修改與其他併發事務所做的修改隔離
4)永續性(Durablity):事務完成後,對系統的影響是永久性的
5.JDBC事務API:
1)Connection.getAutoCommit():獲取當前事務的提交方式
2)Connection.setAutoCommit():設定事務的提交方式,引數:true,自動提交;false:不自動提交
3)Connection.commit():提交事務
4)Connection.rollback():回滾事務
6.批量更新API:用於執行DML操作
---PS1:Statement類有類似方法為addBatch(String sql)
---PS2:executeBatch()執行批量,clearBatch()清空批量,二者都適用於Statement和PreparedStatement物件
7.獲取主鍵值:在建立PreparedStatement物件時使用Connection過載方法,要求除傳入第一個引數(SQL語句)外,需要傳入第二個引數(一個字串陣列,裡面的元素為需要返回的列名)
---PS1:字串中填寫需要返回的列名
---PS2:ResultSet getGenerateKeys(),該方法可以獲取主鍵值
---PS3:ORACLE支援的獲取方法
8.分頁查詢:
1)有兩種方式,一是:每次只返回一頁的資料,記憶體壓力小,適合大資料量的查詢;二是:一次性將資料快取到記憶體中,但是隻顯示需要的一頁資料,記憶體壓力大,適合小資料量的查詢(假分頁)
2)不同資料庫,對分頁有不同的實現方式,ORACL是分三層結構的方式(前面有寫),而MySQL的分頁查詢語句是:
---select * from t limit begin(從第幾條開始),pageSize(每頁顯示的條數)
9.DAO:資料庫訪問物件,封裝了對資料庫的所有操作,隔離資料庫和業務層,使Java操作資料庫面向物件化。DAO層需要定義對錶的對映關係,包括:
---表和類對應
---列名和類屬性對應
---記錄和物件對應