1. 程式人生 > >Java學習筆記-Java基礎21(JDBC高階程式設計)

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層需要定義對錶的對映關係,包括:

        ---表和類對應

        ---列名和類屬性對應

        ---記錄和物件對應