•數據庫自己是個獨立運行的應用程序html
•撰寫應用程序是利用通訊協議對數據庫進行指令交換,以進行數據的增刪查找java
•JDBC(Java DataBaseConnectivity)是Java聯機數據庫的標準規範 •定義一組標準類與接口,應用程序須要聯機數據庫時調用這組標準API,標準API中接口會由數據庫廠商操做,稱爲JDBC驅動程序mysql
•JDBC標準分爲兩部分正則表達式
•JDBC應用程序開發者接口sql
•JDBC驅動程序開發者接口數據庫
•依操做方式可將驅動程序分爲四種類型學習
•JDBC-ODBC Bridge Driver測試
•Native API Driver設計
•JDBC-Net Driver3d
•Native Protocol Driver
•Connection接口的操做對象是數據庫聯機表明對象,要取得Connection操做對象,能夠經過DriverManager的getConnection(),除了基本的用戶名稱、密碼以外,還必須提供JDBCURL,其定義了鏈接數據庫時的協議、子協議、數據源識別
•取得Connection對象以後,可使用isClosed()方法測試與數據庫鏈接是否關閉。在操做完以後,若肯定再也不須要鏈接,則必須使用close()來關閉與數據庫的鏈接,以釋放連接是相關的必要資源。
•JDBC目的
•讓Java程序設計人員在撰寫數據庫操做程序時能夠有個統一的接口,無須依賴特定的數據庫API,「寫一個Java程序,操做全部數據庫」
•鏈接數據庫
•鏈接數據庫,必需要有廠商操做的JDBC驅動程序,必須在CLASSPATH中設定驅動程序JAR文檔
•要取得數據庫聯機,必須的幾個動做
•註冊Driver操做對象
•取得Connection操做對象
•關閉Connection操做對象
•使用JDBC加載.class文件方法有四種
•(1)使用Class.forName()
•(2)自行創建Driver操做接口類的實例(直接撰寫代碼java.sql.Driver driver = new com.mysql.jdbc.Driver())
•(3)啓動JVM時指定jdbc.drivers屬性(執行java命令時java -Djdbc.drivers=com.mysql.jdbc.Driver;XXXDriver YourProgram)指定多個驅動程序類,用分號間隔
•(4)設定JAR中/service/java.sql.Driver文檔
•取得Connection操做對象
•「協議」在JDBC URL中老是jdbc開始,「子協議」是橋接的驅動程序、數據庫產品名稱或聯機機制,「數據源識別」標出數據庫的地址、端口號、名稱、用戶、密碼等信息
•關閉Connection操做對象
•取得Connection對象後,使用isClosed()方法測試與數據庫的鏈接是否關閉,再也不須要鏈接必須使用close()來關閉與數據庫的鏈接,以釋放鏈接時相關的必要資源,可使用嘗試自動關閉資源語法
•使用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表示「時、分、秒、微秒」的格式。
JDBC進階
•在ResultSet時,默承認以使用next()移動數據光標至下一筆數據,然後使用getXXX()方法來取得數據
•在數據光標移動的API上,可使用absolute()、afterLast()、beforeFirst()、first()、last()進行絕對位置移動,使用relative()、previous()、next()進行相對位置移動,移動成功返回true。
•可以使用isAfterLast()、isBeforeFirst()、isFrist()、isLast()判斷當前位置。
•交易的四個基本要求是原子性、一致性、隔離行爲與持續性,依英文字母首字母簡稱爲ACID。
•在交易管理時,僅想要撤回某個SQL執行點,則能夠設定存儲點。
•幻讀:同一交易期間,讀取到的數據筆數不一致。
•批次更新 •使用addBatch()方法來收集SQL,並使用executeBatch()方法將所收集的SQL傳送出去
•SQL的執行順序就是addBath()時的順序
•Blob與Clob •JDBC中提供了java.sql.Blob與java.sql.Clob兩個類分別表明BLOB與CLOB數據
•經過PreparedStatement的setBlob()來設定Blob對象,讀取數據時,能夠經過ResultSet的getBlob()取得Blob對象
•交易簡介
•隔離行爲的支持上,JDBC能夠經過Connection的getTransactionIsolation()取得數據庫目前的隔離行爲設定,經過setTransactionIsolation()可提示數據庫設定指定的隔離行爲,可設定常數是定義在Connection上
•對交易不設定隔離行爲TRANSACTION_NONE
•metadata簡介
•詮釋數據的數據
•JDBC,經過Connection的getMetaData()方法取得DatabasemetaData對象,經過該對象提供的方法取得數據庫總體信息,Result表示查詢到的數據
•結合教材的圖解,「可重複讀取」針對兩次交易讀取數據不一致,同一交易讀取數據必須相同的狀況,「可循序」針對同一交易期間讀取到的數據不一致,在數據不一致時,交易能夠照順序逐一進行
•Linux中使用rm刪除文件時,若是想忽略提示,直接刪除文件,可使用-f選項強制刪除。
•Linux中使用cp命令拷貝目錄時要加上-r ,-R選項。
•NIO2中,可使用FileSystem中的方法取出文件系統根目錄信息
正則表達式」(‘|」)(.*?)\1」匹配「'Hello',"World」」的結果是(D):
A . 不匹配
B . 'Hello'
C . "World"
D . 'Hello',"World"
解釋:反向引用 \1 表明第一個()中的匹配內容
正則表達式「r.t」匹配字符串「rat」的Java 代碼表達式是(D)
A ."rat".matcher("r.t")
B ."r.t".matcher("rat")
C .Pattern.compile("rat").matcher("r.t")
D .Pattern.compile("r.t").matcher("rat")
評分標準
1.正確使用Markdown語法(加1分):
•不使用Markdown不加分
•有語法錯誤的不加分(連接打不開,表格不對,列表不正確...)
•排版混亂的不加分
2.模板中的要素齊全(加1分)
•缺乏「教材學習中的問題和解決過程」的不加分
•缺乏「代碼調試中的問題和解決過程」的不加分
•代碼託管不能打開的不加分
•缺乏「結對及互評」的不能打開的不加分
•缺乏「上週考試錯題總結」的不能加分
•缺乏「進度條」的不能加分
•缺乏「參考資料」的不能加分
3.教材學習中的問題和解決過程, 一個問題加1分
4.代碼調試中的問題和解決過程, 一個問題加1分
5.本週有效代碼超過300分行的(加2分) •一週提交次數少於20次的不加分
6.其餘加分:
•週五前發博客的加1分
•感想,體會不假大空的加1分
•排版精美的加一分
•進度條中記錄學習時間與改進狀況的加1分
•有動手寫新代碼的加1分
•課後選擇題有驗證的加1分
•代碼Commit Message規範的加1分
•錯題學習深刻的加1分
•點評認真,能指出博客和代碼中的問題的加1分
•結對學習狀況真實可信的加1分
7.扣分:
•有抄襲的扣至0分
•代碼做弊的扣至0分
•遲交做業的扣至0分
•本週結對學習狀況
無
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 4/200 | 1/2 | 10/20 | |
第二週 | 20/500 | 2/4 | 20/38 | |
第三週 | 40/1000 | 3/7 | 30/60 | |
第四周 | 60/1300 | 4/9 | 40/90 | |
第五週 | 80/1600 | 5/11 | 50/120 | |
第六週 | 100/1600 | 6/11 | 60/120 | |
第七週 | 120/1900 | 7/13 | 70/150 | |
第八週 | 150/1900 | 8/13 | 80/150 | |
第九周 | 180/2200 | 9/15 | 90/180 |