20145320《Java程式設計》第9周學習總結

20145320周岐浩發表於2016-05-01

20145320《Java程式設計》第9周學習總結

教材學習內容總結

16.整合資料庫

JDBC(java DateBase Connectivity)是用於執行SQL的解決方案,開發人員使用JDBC的標準介面,資料庫廠商則對介面進行操作,開發人員無須接觸底層資料庫驅動程式的差異性。

廠商在操作JDBC驅動程式時,依方式可將驅動程式分為4種型別:

  • Type1:JDBC-ODBC Bridge Driver
  • Type1:Native API Driver
  • Type1:JDBC-Net Driver
  • Type1:Native Protocol Driver

資料庫操作相關的JDBC介面或類都位於java.sql 包中。要連線資料庫,可以向DriverManager取得Connetion物件。Connection是資料庫聯機的代表物件,一個Connection物件就代表一個資料庫聯機。SQLExcrption是在處理JDBC時經常遇到的一個異常物件,為資料庫操作過程發生錯誤時的代表物件。

取得聯機等與資料庫來源相關的行為規範在javax.sql.DataSource介面,實際如何取得Connection則由操作介面的物件來負責。

Connection時資料庫連線的代表物件,接下來要執行SQL的話,必須取得javax.sql.Statement物件。它是SQL描述的代表物件。可以使用ConnectioncreateStatement()來建立Statement()物件

StatementexecuteQuery()方法則是用於SELECT等查詢資料庫的SQL,executeUpdate()會返回int結果,表示資料變動的筆數,executeQuery()會返回java.sql.ResultSet物件,代表查詢的結果,查詢的結果會是一筆一筆的資料。可以使用ResultSetnext()來移動至下一筆資料,它會返回true或是false表示是否有下一筆資料,接著可以使用getxxxx()來取得資料

在使用ConnectionStatementResultSet時,要將之關閉以釋放相關資源。

如果有些操作只是SQL語句當中某些引數會有所不同,其餘的SQL子句皆相同,則可以使用java.sql.PrepareStatement。可以使用ConnectionprepareStatement()方法建立好一個預先編譯的SQL語句,當中引數會變動的部分,先指定“?”這個佔位字元。等到需要真正指定引數執行時,在使用相對應的setInt()setString()等方法,指定“?”處真正該有的引數。

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

關於書上514頁的MessageDAODemo.java得到的結果如下
20145320《Java程式設計》第9周學習總結

假如我們沒有事先Connection連線資料庫,就會丟擲java.sql.SQLExceptionNo suitable driver found for jdbc

20145320《Java程式設計》第9周學習總結

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

雖說這周看似要自學三章,其實我就學了一章,java的核心知識與難點之前都已經學完了,後面的章節全都是介紹一些類的應用。我知道第16章、第17章和第18章跟之前一樣,還是介紹一些類的應用,於是我採取和之前一樣的辦法,一邊看書,一邊總結,看書上總共介紹了多少種API,每一種API的架構是什麼,每一種API的作用與注意事項是什麼。就這樣有系統的去學習,感覺效率十分高!不過我感覺後面的並沒有前面那麼有用,畢竟前面的是重點。java是一門很好的語言,如果不搞這麼多奇怪的東西就好了

學習進度條

程式碼託管截圖

20145320《Java程式設計》第9周學習總結

程式碼行數(新增/累積) 部落格量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 200/200 1/1 20/20
第二週 300/500 1/2 18/38
第三週 500/1000 1/3 22/60
第四周 500/1500 1/4 30/90
第五週 400/1900 1/5 20/110
第六週 400/2300 2/7 20/130
第七週 300/2600 2/9 15/145
第八週 284/2884 2/11 20/165
第九周 923/3807 2/13 20/185

參考資料

相關文章