20165214 第七周學習任務
20165214 2017-2018-2 《Java程序設計》第七周學習總結
教材學習內容總結
- 11.1 介紹了如何下載MySQL社區版,我跟著流程下載成功了。
11.2 介紹了如何啟動MySQL數據庫服務器;可以使用
mysqadmin -r [用戶名] -p [密碼]
來修改密碼。初始化成功後出現了data目錄:
11.3 MySQL客戶端管理工具(如Navicat)可以在與數據庫服務器建立連接之後,進行建立數據庫及相關操作。進行操作後如下結果:
- 11.4 Java有專門操作數據庫的API:JDBC。使用JDBC的步驟:①與一個數據庫建立連接;②向已連接的數據庫發送SQL語句;③處理SQL語句返回的結果。
- 11.5 應用程序在和MySQL數據庫服務器上的數據庫建立連接後,能夠和數據庫交互信息。
在將數據庫驅動放到JDK的擴展目錄後,加載數據庫驅動
try{ Class.forName("com.mysql.jdbc.Driver"); { catch(Exception e){}
- 連接數據庫使用java.sql包中的DriverManager類中的類方法Connection getConnection來建立連接
- 11.6 查詢操作。查詢操作分三個步驟:①向數據發送SQL查詢語句;②處理查詢結果;③關閉連接(關閉後程序無法在數據庫中獲得數據)
- 結果集的遊標的初始位置在結果集第一行的前面,可以使用next()
Statement stmt=con.creatStatement(int type,int concurrency)
來獲得一個Statement對象後,根據type類型可以使得遊標以不同方式進行移動。 - 條件與排序查詢:①where語句的格式
where 字段 from 表格 where 條件
,使用該語句可以在表格中獲取關鍵字且關鍵字滿足條件的信息。其中可以用操作符進行匹配,使用%代替0個或者多個字符,用一個下劃線_代替一個字符。②order by語句的格式select * from mess where name like * order by name
可以在where語句的基礎上進行關鍵字按條件排序,然後獲取信息。
- 結果集的遊標的初始位置在結果集第一行的前面,可以使用next()
- 11.7 更新、添加與刪除操作。首先要創建Statement對象,然後用該對象調用方法
public int executeUpadte(String sqlStatement)
來進行操作。- ①更新:
update 表 set 字段 = 新值 where <條件子句>
- ②添加:
insert into 表 values (對應的具體記錄)
- ③刪除:
delete from 表 where <條件字句>
- ①更新:
- 11.8 使用預處理語句(PrepareStatement)
- 預處理語句可以對指定的SQL語句進行預編譯處理,提高程序執行效率。PrepareStatement對象可以調用這三個方法來使得底層內部命令被數據庫執行:
- ①
ResultSet executeQuery()
- ②
boolean execute()
- ③
int executeUpdate()
- ①
- 通配符的使用:在對SQL進行預處理時可以使用通配符?(註意,這裏必須為英文輸入法)代替字段的值,但是要預先調用相應的方法設置通配符?代表的具體值,如:
sql.setFloat(1,1.76f);
和sql.setString(2,"你好");
。通配符按照它們在預處理SQL語句中從左到右出現的順序分別被稱為第1個,第2個...。
- 預處理語句可以對指定的SQL語句進行預編譯處理,提高程序執行效率。PrepareStatement對象可以調用這三個方法來使得底層內部命令被數據庫執行:
- 11.9 通用查詢。ResultSet對象調用調用getMetaData()方法返回一個ResultSetMetaData對象,然後這個對象就可以調用getColumeCount()方法來返回結果集中列的數目;也可以調用getColumnName(int i)方法可以返回結果集中第i列的名字。
- 11.10 事務
- 事務及處理。事務由一組SQL語句組成;事務處理是指應用程序保證事務中的SQL語句的執行與否是同步的,這可以保證數據庫中數據的完整性與一致性。
- JDBC事務處理步驟
- ①和數據庫的連接對象(例如con)的提交模式是自動提交模式,即它產生的Statement對象對數據庫提交的SQL語句都會立刻升序,因此為了事務處理,con可以調用
setAutoCommit(false)
方法來關閉自動提交方式,接著再像之前那樣獲取Statement對象sql。 - ②con可以調用
commit()
方法讓SQL語句全部生效。 - ③當con調用
commit()
方法進行事務處理時,只要其中一個SQL語句未能生效,就拋出SQLException異常,處理異常時要調用rollBack()方法,來撤銷已經成功執行的SQL語句,以此來達到事務處理的效果。
- ①和數據庫的連接對象(例如con)的提交模式是自動提交模式,即它產生的Statement對象對數據庫提交的SQL語句都會立刻升序,因此為了事務處理,con可以調用
- 11.11 介紹了SQL Server數據庫的下載與連接建立。
- 11.12 Derby數據庫是Java平臺提供的一個數據庫管理系統,雖然它占空間小,但是支持幾乎大部分的數據庫應用所需要的特性。應用程序連接Derby數據庫需要兩個步驟
- ①加載Derby數據庫驅動程序:
Class.forName("org.apache.jdbc.EmbeddedDriver");
- ②創建並連接數據庫或連接已有的數據庫:
Connection con=DriverManager.getConnection("jdbc:derdy:students;create=true");
這裏create取true,若沒有該數據庫,則創建。如果將create取false,那麽只能連接已有的數據庫而不能創建。
- ①加載Derby數據庫驅動程序:
教材學習中的問題和解決過程
問題1:除了下載MySQL以外,我還下載了XAMMP。但是,在啟動Apache和MySQL的時候,出現了如下錯誤:
問題1解決方案:原因是Apache的啟動需要443端口,而443端口被我電腦裏面的VMvare給占用了。於是我打開VMvare的端口設置,把端口值改成了449,問題就解決了。參考博客。
代碼調試中的問題和解決過程
問題1:在運行第一個程序的時候出現了這樣的問題
問題1解決方案:現在還沒有解決。
代碼托管
上周考試錯題總結
第五周:
錯題1:內部類是可以被private修飾的。
錯題2:對於嚴重的錯誤才用Error類來描述,這裏是不嚴重的問題,應該通過Exception類來描述。
錯題3:要註意審題。
錯題4:要學會查找API(現在已經學會查詢API了)。
錯題5:B選項應當是抽象路徑名的路徑名字符串。
錯題6:?指得是出現1次或者0次。這裏?修飾的是c而不是abc三個字母。
錯題7:
第六周:
錯題1:第⑤項應該是TreeMap
錯題2:A選項是錯的。因為如果指定對象無法與該 set 中的當前元素進行比較,則拋出ClassCastException異常。
錯題3:/d+匹配0~9中的數字出現一次或者一次以上。
錯題4:查閱了API,D是正確的。
錯題5:B選項的右邊發生錯誤,超出short類型範圍。
錯題6:命令行輸入的得一個元素存儲在args[0],因此args[3]=3。
結對及互評
- 本周結對學習情況
- 結對照片
- 結對學習內容
- 進行了結隊編程,實現了四則運算的本周內容。
- 上周博客互評情況
- 20165210
其他
本周學習了數據庫,不過感覺學得很不順暢。。倒也不是說代碼的問題,代碼是能夠看得懂得,但是在建立數據庫的連接、進行程序運行的時候,經常出現這個問題:
也一直沒找到解決的方案。這周的時間比較趕,於是我就先把書上的教程都不落下地閱讀並且操作了一回,打算在下周解決完這個問題後,再回來嘗試著運行這些有問題的程序。
學習進度條
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | |
---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 |
第一周 | 36/36 | 1/1 | 8/8 |
第二周 | 432/468 | 2/3 | 15/23 |
第三周 | 964/1432 | 1/4 | 16/39 |
第四周 | 725/2157 | 1/5 | 14/53 |
第五周 | 1428/3585 | 3/8 | 18/71 |
第六周 | 1323/4908 | 1/9 | 17/88 |
第七周 | 960/5868 | 3/12 | 22/110 |
計劃學習時間:20小時
實際學習時間:22小時
20165214 第七周學習任務