20155338 2016-2017-2 《Java程序設計》第九周學習總結

20155338 2016-2017-2 《Java程序設計》第九周學習總結

教材學習內容總結

第十六章 整合數據庫

JDBC入門

· 數據庫自己是個獨立運行的應用程序html

· 撰寫應用程序是利用通訊協議對數據庫進行指令交換,以進行數據的增刪查找java

· JDBC(Java DataBase Connectivity)是Java聯機數據庫的標準規範mysql

· 定義一組標準類與接口,應用程序須要聯機數據庫時調用這組標準API,標準API中接口會由數據庫廠商操做,稱爲JDBC驅動程序git

· JDBC標準分爲兩部分正則表達式

· JDBC應用程序開發者接口sql

· JDBC驅動程序開發者接口數據庫

· 依操做方式可將驅動程序分爲四種類型:1、JDBC-ODBC Bridge Driver;2、Native API Driver;3、JDBC-Net Driver;4、Native Protocol Driver學習

· Connection接口的操做對象是數據庫聯機表明對象,要取得Connection操做對象,能夠經過DriverManager的getConnection()。測試

除了基本的用戶名稱、密碼以外,還必須提供JDBC、URL,其定義了鏈接數據庫時的協議、子協議或者數據源識別。.net

取得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;XXXDriverYourProgram)指定多個驅動程序類,用分號間隔

(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對象

教材學習中的問題和解決過程

  • 問題1:定義註釋時,可以使用java.lang.annotation.Target.限定時可指定java.lang.annotation.ElementType的枚舉值。可是在製做JavaDoc文件時,卻默認不會將註釋數據加入文件中,若是想,該怎樣操做?

  • 解決過程:若是想要將註釋數據加入文件,可使用java.lang.annotation.Documented.。 默認父類設定的註釋,不會被繼承至子類,在定義註釋時,設定java.lang.annotation.Inherited註釋,就可讓註釋被子類繼承。

代碼調試中的問題和解決過程

本週代碼方面沒有什麼問題,精力大都在實驗上
,詳情請見本週實驗二的博客。

代碼託管

上週考試錯題總結

  • NIO2中,可使用()中的方法取出文件系統根目錄信息。

    A .Path

    B .DirectoryStream

    C .FileStore

    D .FileSystem

• 正則表達式 zo* 匹配()

A .z

B .zo

C .zoo

D .zooooooooooooooooooooooooooo

正確答案: A B C D

結對及互評

點評過的同窗博客和代碼

其餘(感悟、思考等,可選)

本週學習的三張內容相較於前面的內容相對來講比較簡單,可是我以爲更爲實用,本週學習時間比較緊張,知識將幾個代碼跑了跑,後慢若是空出時間來的話必定將書上的代碼都運行一下。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 20篇 400小時
第一週 100/100 1/1 7/7
第二週 50/150 1/2 8/15
第三週 50/200 1/3 10/25
第四周 500/800 1/4 20/45
第五週 300/1100 1/5 20/65
第六週 800/1900 1/6 32/97
第七週 400/2300 2/8 30/127
第八週 400/2700 1/9 23/150
第九周 300/3000 2/11 18/168
  • 計劃學習時間:25小時

  • 實際學習時間:18小時

參考資料

相關文章
相關標籤/搜索