JDBC
數據庫自己是個獨立運行的應用程序
撰寫應用程序是利用通訊協議對數據庫進行指令交換,以進行數據的增刪查找。
JDBC(Java DataBase Connectivity)是Java聯機數據庫的標準規範。
定義一組標準類與接口,應用程序須要聯機數據庫時調用這組標準API,標準API中接口會由數據庫廠商操做,稱爲JDBC驅動程序。
JDBC標準分爲兩部分
JDBC應用程序開發者接口
JDBC驅動程序開發者接口
依操做方式可將驅動程序分爲四種類型:JDBC-ODBC Bridge Driver;Native API Driver;JDBC-Net Driver;Native Protocol Driver。
Connection接口的操做對象是數據庫聯機表明對象,要取得Connection操做對象,能夠經過DriverManager的getConnection(),除了基本的用戶名稱、密碼以外,還必須提供JDBC URL,其定義了鏈接數據庫時的協議、子協議、數據源識別。
取得Connection對象以後,可使用isClosed()方法測試與數據庫鏈接是否關閉。在操做完以後,若肯定再也不須要鏈接,則必須使用close()來關閉與數據庫的鏈接,以釋放連接是相關的必要資源。html
取得Connection操做對象
「協議」在JDBC URL中老是jdbc開始,「子協議」是橋接的驅動程序、數據庫產品名稱或聯機機制,「數據源識別」標出數據庫的地址、端口號、名稱、用戶、密碼等信息。java
關閉Connection操做對象
取得Connection對象後,使用isClosed()方法測試與數據庫的鏈接是否關閉,再也不須要鏈接必須使用close()來關閉與數據庫的鏈接,以釋放鏈接時相關的必要資源,可使用嘗試自動關閉資源語法git
使用Statement、ResultSet
執行SQL,必須取得java.sql.Statement,使用Connection的createStatement()創建Statement對象。
取得Statement對象後,使用executeUpdate()(在表中插入一筆數據,返回int結果,表示數據變更的筆數)、executeQuery()(用於SELECT等查詢數據庫的SQL,返回java.sql.ResultSet對象,表明查詢結果,會是一筆一筆的數據)。
Statement或ResultSet不使用時,使用close()關掉,Statement關閉時,所關聯的ResultSet也會自動關閉。正則表達式
日期時間在JDBC中,並非使用java.util.Date,這個對象可表明的日期時間格式是「年、月、日、分、秒、毫秒」,在JDBC中要表示日期,是使用java.sql.Date,其日期格式是「年、月、日」,要表示時間的話則是使用java.sql.Time,其格式時間爲」時、分、秒」,java.sql.Timestamp表示「時、分、秒、微秒」的格式。
在ResultSet時,默承認以使用next()移動數據光標至下一筆數據,然後使用getXXX()方法來取得數據
在數據光標移動的API上,可使用absolute()、afterLast()、beforeFirst()、first()、last()進行絕對位置移動,使用relative()、previous()、next()進行相對位置移動,移動成功返回true。
可以使用isAfterLast()、isBeforeFirst()、isFrist()、isLast()判斷當前位置。
交易的四個基本要求是原子性、一致性、隔離行爲與持續性,依英文字母首字母簡稱爲ACID。
在交易管理時,僅想要撤回某個SQL執行點,則能夠設定存儲點。sql
幻讀:同一交易期間,讀取到的數據筆數不一致。
批次更新
使用addBatch()方法來收集SQL,並使用executeBatch()方法將所收集的SQL傳送出去。
SQL的執行順序就是addBath()時的順序
Blob與Clob
JDBC中提供了java.sql.Blob與java.sql.Clob兩個類分別表明BLOB與CLOB數據。
經過PreparedStatement的setBlob()來設定Blob對象,讀取數據時,能夠經過ResultSet的getBlob()取得Blob對像。數據庫
反射與類加載器函數
Java真正須要某個類時纔會載入對應的.class文檔, java.lang.Class 的實例表明Java應用程序運行時載入的.class文檔,Class類沒有公開(public)構造函數,實例是由JVM自動產生,能夠經過Object的getClass()方法,或者是透過.class常量取得每一個對象對應的Class對象。
可使用Class.forName()方法實現動態加載類,Class.forName()方法在找不到指定類時會拋出ClassNotFoundException異常。
Class對象加載的.class文檔,取得Class對象後,就能夠取得.class文檔中記載的信息,每一個類型都會有對應的類型,若是事先不知道類名稱,能夠利用Class.forName()動態加載.class文檔,取得Class對象以後,利用其newInstance()方法創建類實例。
類加載指的是將類的class文件讀入JVM,併爲之建立一個Class對象。
JVM預約義的三種類型類加載器,當一個JVM啓動的時候,開始使用以下三種類型類裝入器:
啓動(Bootstrap)類加載器:引導類裝入器是用本地代碼實現的類裝入器,它負責將 /lib下面的核心類庫或-Xbootclasspath選項指定的jar包加載到內存中。因爲引導類加載器涉及到虛擬機本地實現細節,開發者沒法直接獲取到啓動類加載器的引用,因此不容許直接經過引用進行操做。
擴展(Extension)類加載器:擴展類加載器是由Sun的ExtClassLoader(sun.misc.Launcher$ExtClassLoader)實現的。它負責將< Java_Runtime_Home >/lib/ext或者由系統變量-Djava.ext.dir指定位置中的類庫加載到內存中。開發者能夠直接使用標準擴展類加載器。
系統(System)類加載器:系統類加載器是由 Sun的 AppClassLoader(sun.misc.Launcher$AppClassLoader)實現的。它負責將系統類路徑java -classpath或-Djava.class.path變量所指的目錄下的類庫加載到內存中。開發者能夠直接使用系統類加載器。
Bootstrap Loader、Extended Loader與System Loader在程序啓動後,就沒法再改變它們的搜索路徑。若是在程序運行過程當中,打算動態決定從其餘路徑加載類,就要產生新的類加載器,新的類加載器創建後,父加載器會設爲System Loader。學習
交易簡介
隔離行爲的支持上,JDBC能夠經過Connection的getTransactionIsolation()取得數據庫目前的隔離行爲設定,經過setTransactionIsolation()可提示數據庫設定指定的隔離行爲,可設定常數是定義在Connection上,對交易不設定隔離行爲TRANSACTION_NONE。測試
metadata簡介
詮釋數據的數據;JDBC,經過Connection的getMetaData()方法取得DatabasemetaData對象,經過該對象提供的方法取得數據庫總體信息,Result表示查詢到的數據。spa
教材學習有問題先去https://shimo.im/doc/1i1gldfsojIFH8Ip/看看,若是別人沒有提出相同問題,能夠編輯文檔添加,而後把本身提出的問題複製到下面:
問題1:
問題1解決方案:
問題應該不是catch空着寫,雖然catch裏什麼也不寫對程序很是很差,因該是throw沒有存在的必要,直接去掉能夠將代碼改好,若是不去掉的話,須要具體去考慮有哪些可能出現錯誤而後再決定throw什麼。
基於評分標準,我給本博客打分:14分。
結對照片
上週博客互評狀況(只要連接,具體點評放相應博客下)
20155207 王雪純 http://www.cnblogs.com/lnaswxc/p/6719714.html
20155203 杜可欣 http://www.cnblogs.com/xhwh/p/6718261.html
20155311 高梓雲 http://www.cnblogs.com/gaoziyun11/p/6719419.html
20155217 楊笛 http://www.cnblogs.com/yangdi0420/p/6718330.html
感受越是日後越累了,不過堅持到第12周可能會好點吧。
嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進本身的計劃能力。這個工做學習中很重要,也頗有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。
計劃學習時間:18小時
實際學習時間:18小時
改進狀況:
(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)