201621123031 《Java程序設計》第14周學習總結

1. 本週學習總結

1.1 以你喜歡的方式(思惟導圖或其餘)概括總結與數據庫相關內容。

2. 使用數據庫技術改造你的系統

2.1 簡述如何使用數據庫技術改造你的系統。要創建什麼表?截圖你的表設計。

答:設置兩個dao接口,分別用於管理用戶模塊和圖書模塊,其中要創建一個圖書表books 用於存放圖書館裏的全部書籍,而後要創建一個用戶表users 用於存放用戶,而後每一個用戶要擁有一個借閱表,表名以用戶ID前加一個字母a (表名不能全爲數字)命名。mysql

books表:

sql

users表:

數據庫

借閱表:

api

2.2 系統中使用到了JDBC中什麼關鍵類?

  • 1.DriverManager類:用於管理數據庫中的全部驅動程序
  • 2.Connection接口:用於與特定數據庫進行鏈接
  • 3.PreparedStatement接口:用於動態執行SQL語句
  • 4.ResultSet接口:用於暫時存放數據庫查詢操做所得到的結果集

2.3 截圖數據庫相關模塊的關鍵代碼。關鍵行須要加註釋。








2.4 選作:使用JDBCUtil進行改造系統。

2.6 選作:使用事務改造系統

3. 代碼量統計

3.1 統計本週完成的代碼量

須要將每週的代碼統計狀況融合到一張表中。函數

周次 總代碼量 新增代碼量 總文件數 新增文件數
2 607 607 15 15
3 1642 1035 33 18
5 2044 402 42 9
6 2874 830 57 15
7 3161 287 63 6
8 4299 1138 72 9
9 4831 532 81 9
10 5475 644 93 12
11 5958 483 102 9
12 6819 861 116 14
13 7408 589 127 11
14 8348 940 141 14
15 9296 948 156 15

選作:4. 數據庫學習指導

1. MySQL數據庫基本操做

創建數據庫,將本身的姓名、學號做爲一條記錄插入。(截圖,需出現本身的學號、姓名)
在本身創建的數據庫上執行常見SQL語句(本身完成,沒必要截圖)學習

2. 使用JDBC鏈接數據庫與Statement

2.1 使用Statement操做數據庫。完成實驗任務書-題目2。截圖其中的public static void displayAll()public static int insert(Student stu)的關鍵代碼並出現本身的學號。


2.2 若是要完成根據指定姓名查詢學生數據,即完成函數public Student findStuByName(String name),其中的sql語句怎麼寫?

2.3 你認爲使用JDBC操做數據庫的套路是什麼?

  • 1.加載數據庫驅動
  • 2.創建數據庫的鏈接
  • 3.建立數據庫的操做對象
  • 4.定義操做的SQL語句
  • 5.執行數據庫的操做
  • 6.獲取並操做結果集

3. PreparedStatement與參數化查詢

3.1 使用PreparedStatement,編寫public Student findStuByName(String name),實現根據name進行查找, 。(粘貼關鍵代碼及運行截圖,運行截圖中需出現學號,比較2.2,說明兩種實現的不一樣)

答:使用PreparedStatement對象和使用Statement對象的主要區別是前者採用了」?」佔位符,用於執行參數化查詢,它經過connection.preparedStatement(strSql)方法能夠可讓數據庫對其strSql語句進行預編譯,這樣這條語句就能在後續的查詢中重用,在速度上的優越性大於Statement對象的查詢速度。測試

3.2 若是要實現模糊查找,怎麼修改?好比編寫public List findStusByName(String name),可根據name進行模糊匹配,如將姓名中包含zhang的同窗都找出來。

先插入一些相關數據:ui

findStusByName方法:編碼

測試:命令行

運行結果:

4. 批量更新測試

數據庫課程上,須要測試索引對查找的加速做用。然而在幾百或幾千的數據量上進行操做沒法直觀地體驗到索引的加速做用。現但願編寫一個程序,批量插入10萬條數據,且該數據中的某些字段的內容能夠隨機生成。

4.1 截圖你的代碼(出現學號)、統計運行時間(使用JUint4測試,須要出現時間對比截圖)。

答:十萬條對於普通方法來講要跑過久了(一萬條其實也很久了),就改爲一萬條了。



用10萬的測試數據來單獨測試了一遍batchTest,能夠看到速度也是很快的。

5. JDBCUtil與DAO

5.1 完成試驗任務-題目5中的第4小點,即編寫StudentDao接口及其實現類StudentDaoJDBCImpl

  • StudentDao接口:

  • StudentDaoJDBCImpl類:

Test類:




5.2 使用DAO模式訪問數據庫有什麼好處?請使用4.1的代碼說明,需對比傳統的模式與使用DAO模式訪問數據庫的代碼。

答:數據庫不一樣,其使用它們的命令語句也不一樣,使用DAO模式訪問數據庫能夠屏蔽不一樣數據庫實現差別性,它只關注怎麼將數據寫入數據庫和怎麼取出來,對底層訪問提供了很好的支持。在這一題中,由於只寫了一種實現方法,因此它的優越性沒有很好的體現出來,但若是咱們要使用DAO模式來訪問另一個數據庫,那麼咱們只須要寫一個新的實現類來實現DAO接口中所定義的方法,而後使用的時候就能夠根據咱們的須要使用接口.實現類語句來選擇使用哪個數據庫,但若是咱們用的是傳統的模式,那咱們就得寫兩個獨立程序來實現這個功能,不只增長了代碼量,還不方便程序的拓展與維護。

5.3 使用JDBCUtil改造題目3.1。




6. 事務處理

6.1 使用代碼與運行結果證實你確實實現了事務處理功能,並說明事務處理時在編碼時須要注意哪些?注意:要比較運行成功與運行失敗兩種狀況下對數據庫的更改狀況。(粘貼一段你認爲比較有價值的代碼,出現學號)

答:在數據庫中,一項事務是指由一條或多條對數據庫更新的語句組成的一個工做單元,事務處理機制是指在處理事務時,只有當事務中全部操做都正常完成之後,事務才能被提交到數據庫,若是一項未完成都要撤銷工做。
在jdbc的api中,系統默認會自動提交事務,所以要將多條語句組成一個事務,就得使用setAutoCommit(false)語句來禁止提交,當總體都正常執行之後再使用’commit()’來提交,不然就要調用’rollback()’方法來撤銷事務。

數據表內容:


正常運行:



異常運行:



數據表內容(發現MySQL的可視化界面用起來更方便嘞,我的感受比命令行好使):

6.2 你以爲何時須要使用事務處理?

答:在數據庫的操做中,事務是多條操做語句組成一個不可分割的總體,只有其中全部的操做都成功纔可以算整個事務的成功,所以要實現這種功能,就須要用到事務處理,能夠在發生錯誤時及時撤銷以前的事務。`

相關文章
相關標籤/搜索