一.連接池(數(shù)據(jù)源)
1.直接使用DriverManager的問題
它沒有管理連接上限,并發(fā)量大時很容易導致數(shù)據(jù)庫崩潰
每次調用它,它都創(chuàng)建新連接,而不是復用連接,效率低
2.連接池可以解決上述問題
它能管理連接上限,避免數(shù)據(jù)庫崩潰
它可以讓我們復用連接,提高效率
3.連接池的工作場景
創(chuàng)建連接池對象時,它會自動連接數(shù)據(jù)庫,并創(chuàng)建一批(配)連接(空閑)當調用連接池方法時,它會返回一個連接,并將此連接標記為占用態(tài);
當使用完連接后,需將連接歸還給連接池,它會將連接數(shù)據(jù)清空,標記為空閑態(tài)
當連接池發(fā)現(xiàn)空閑連接即將用盡(配)時,它會再次自動創(chuàng)建一批(配)新連接
當占用連接已達數(shù)據(jù)庫上限(配)時,連接池會讓調用者等待
當高峰期過后,連接池會自動關閉一批(配)連接
4.有哪些常用連接池?
DBCP
C3P0
5.要點
連接池由sun設計出接口DataSource
由廠商提供實現(xiàn)類(DBCP提供的實現(xiàn)類是BasicDataSource)

二.Statement和PreparedStatement
1.它們的聯(lián)系
它們都能夠執(zhí)行SQL
PreparedStatement extendsStatement
2.它們的區(qū)別(面試題)
Statement適合執(zhí)行靜態(tài)(無條件)SQL
PreparedStatement適合執(zhí)行動態(tài)(有條件)SQL
3.Statement運行原理

4.PreparedStatement運行原理

5.使用PreparedStatement可以避免注入攻擊

三.ResultSet
1.結果集的指針

2.ResultSetMetaData
結果集元數(shù)據(jù):對結果集進行描述(概括)的數(shù)據(jù)
包含:多少列,列名,列的類型
3.可跳動結果集
幾乎不用
JDBC支持如下的日期類型
java.sql.Date年月日
java.sql.Time時分秒
java.sql.Timestamp完整日期
上述日期都是java.util.Date的子類
代碼示例:利用連接池獲取連接的封裝

其中db.properties文件內容如下:

測試代碼:





實現(xiàn)轉賬功能:
假設當前用戶已經(jīng)登錄了網(wǎng)銀,他已經(jīng)輸入了收款方的賬號,和要轉出的金額.他點擊了轉賬按鈕,服務器接收了相關的數(shù)據(jù),開始進行轉賬.
轉賬的步驟:
1.查詢付款方余額夠不夠
2.查詢收款方賬號,看對不對
3.修改付款方的余額,-N元
4.修改收款方的余額,+N元
