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描述的代表物件。可以使用Connection
的createStatement()
來建立Statement()
物件
Statement
的executeQuery()
方法則是用於SELECT等查詢資料庫的SQL,executeUpdate()
會返回int
結果,表示資料變動的筆數,executeQuery()
會返回java.sql.ResultSet
物件,代表查詢的結果,查詢的結果會是一筆一筆的資料。可以使用ResultSet
的next()
來移動至下一筆資料,它會返回true
或是false
表示是否有下一筆資料,接著可以使用getxxxx()
來取得資料
在使用Connection
、Statement
、ResultSet
時,要將之關閉以釋放相關資源。
如果有些操作只是SQL語句當中某些引數會有所不同,其餘的SQL子句皆相同,則可以使用java.sql.PrepareStatement
。可以使用Connection
的prepareStatement()
方法建立好一個預先編譯的SQL語句,當中引數會變動的部分,先指定“?”這個佔位字元。等到需要真正指定引數執行時,在使用相對應的setInt()
、setString()
等方法,指定“?”處真正該有的引數。
教材學習中的問題和解決過程
關於書上514頁的MessageDAODemo.java
得到的結果如下
假如我們沒有事先Connection
連線資料庫,就會丟擲java.sql.SQLException
和No suitable driver found for jdbc
其他(感悟、思考等,可選)
雖說這周看似要自學三章,其實我就學了一章,java的核心知識與難點之前都已經學完了,後面的章節全都是介紹一些類的應用。我知道第16章、第17章和第18章跟之前一樣,還是介紹一些類的應用,於是我採取和之前一樣的辦法,一邊看書,一邊總結,看書上總共介紹了多少種API,每一種API的架構是什麼,每一種API的作用與注意事項是什麼。就這樣有系統的去學習,感覺效率十分高!不過我感覺後面的並沒有前面那麼有用,畢竟前面的是重點。java是一門很好的語言,如果不搞這麼多奇怪的東西就好了
學習進度條
程式碼託管截圖
程式碼行數(新增/累積) | 部落格量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 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 |