學號 20175212 《Java程序設計》第九周學習總結
學號 20175212 《Java程序設計》第九周學習總結
教材學習內容總結
一、MySQL數據庫管理系統
1.在官網上下載並安裝MySQL
2.在IDEA中輸入測試代碼ConnectionDemo.java
import static java.lang.System.out; import java.sql.*; public class ConnectionDemo { public static void main(String[] args) throws ClassNotFoundException, SQLException { Class.forName("com.mysql.jdbc.Driver"); String jdbcUrl = "jdbc:mysql://localhost:3306/demo"; String user = "root"; String passwd = ""; try(Connection conn = DriverManager.getConnection(jdbcUrl, user, passwd)) { out.printf("已%s數據庫連接%n", conn.isClosed() ? "關閉" : "打開"); } } }
二、MySQL客戶端管理系統
1.使用老師推薦的XAMPP,在官網進行下載
2.成功連接MySQL,如下圖
3.用瀏覽器輸入http://127.0.0.1
打開XAMPP。
4.SQL建立數據庫:
CREATE SCHEMA demo;
5.建立數據庫表:
use demo;
CREATE TABLE t_message (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name CHAR(20) NOT NULL,
email CHAR(40),
msg TEXT NOT NULL
) CHARSET=UTF8;
三、連接數據庫
1.在官網https://dev.mysql.com/downloads/connector/j/ 上下載驅動
mysql-connector-java-5.1.41-bin.jar
2.在IDEA中添加驅動,如下圖:
3.運行示例代碼,顯示成功連接如下圖
四、查詢操作
- 得到SQL查詢語句對象
try{ Statement sql=con.createStatement();
}
catch(SQLException e ){}
2.處理查詢結果
SQL查詢語句對數據庫的查詢操作將返回一個ResultSet
對象,ResultSet
對象是按“列”(字段)組織的數據行構成
ResultSet rs = sql.executeQuery("SELECT * FROM students");
下圖為若幹方法:
3.關閉連接:
con.close();
ResultSet對象和數據庫連接對象(Connection對象)實現了緊密的綁定,一旦連接對象被關閉,ResultSet對象中的數據立刻消失
4.順序查找
使用next()
方法移到下一個數據行
5.控制遊標
為了得到一個可滾動的結果集,需使用下述方法獲得一個Statement對象
Statement stmt = con.createStatement(int type ,int concurrency);
常用的滾動查詢方法:
Public boolean absolute(int row):
將遊標移到參數row的指定行後Public int getRow();
得到當前遊標所指向的行號
6.條件與排序查找
- where子語句
一般格式: select 字段 from 表名 where 條件
(1) 字段值和固定值比較,例如:select name,height from mess where name=‘李四‘
(2) 字段值在某個區間範圍,例如:select * from mess where height>1.60 and height<
=1.8
- 排序
用order by
子語句對記錄排序
五、更新、添加與刪除
1.更新
update 表 set 字段 = 新值 where <條件子句>
2.添加
insert into 表(字段列表) values (對應的具體的記錄)
或
insert into 表 values (對應的具體的記錄)
3.刪除
delete from 表名 where <條件子句>
select * from mess where name like '%林%' order by name
教材學習中的問題和解決過程
教材學習有問題先去https://shimo.im/doc/1i1gldfsojIFH8Ip/看看,如果別人沒有提出相同問題,可以編輯文檔添加,然後把自己提出的問題復制到下面:
- 問題1:XAMMPP中無法啟動MySQL
- 問題1解決方案:在
計算機管理
->服務
中停止MySQL的進程
成功啟動
- 問題2:根據教程IDEA連接數據庫時,提示錯誤
- 問題2解決方案:根據錯誤提示,修改代碼
import static java.lang.System.out;
import java.sql.*;
public class ConnectionDemo {
public static void main(String[] args)
throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.cj.jdbc.Driver");
String jdbcUrl = "jdbc:mysql://localhost:3306/demo?serverTimezone=UTC";
String user = "root";
String passwd = "";
try(Connection conn =
DriverManager.getConnection(jdbcUrl, user, passwd)) {
out.printf("已%s數據庫連接%n",
conn.isClosed() ? "關閉" : "打開");
}
}
}
修改了兩部分
- 首先是
Class.forName("com.mysql. cj .jdbc.Driver");
為根據錯誤提示添加驅動。 - 第二處是
String jdbcUrl = "jdbc:mysql://localhost:3306/demo ?serverTimezone=UTC ";
是根據錯誤提示添加time zone
信息。
修改後成功連接
代碼調試中的問題和解決過程
教材中代碼調試有問題先去https://shimo.im/doc/1i1gldfsojIFH8Ip/看看,如果別人沒有提出相同問題,可以編輯文檔添加,然後把自己提出的問題復制到下面:
- 問題1:在測試訪問數據庫時,輸入信息無法輸入數據庫
- 問題1解決方案:修改代碼加入時區信息
import static java.lang.System.out;
import java.util.Scanner;
public class MessageDAODemo {
public static void main(String[] args) throws Exception {
MessageDAO dao = new MessageDAO(
"jdbc:mysql://localhost:3306/demo?" +
"serverTimezone=UTC",
"root", "");
Scanner console = new Scanner(System.in, "Big5");
while(true) {
out.print("(1) 顯示留言 (2) 新增留言:");
switch(Integer.parseInt(console.nextLine())) {
case 1:
dao.get().forEach(message -> {
out.printf("%d\t%s\t%s\t%s%n",
message.getId(),
message.getName(),
message.getEmail(),
message.getMsg());
});
break;
case 2:
out.print("姓名:");
String name = console.nextLine();
out.print("郵件:");
String email = console.nextLine();
out.print("留言:");
String msg = console.nextLine();
dao.add(new Message(name, email, msg));
}
}
}
}
代碼托管
上周考試錯題總結
What is the output of the following code?(下面代碼的運行結果是?)
LocalDate date = LocalDate.of(2018, Month.APRIL, 40);
System.out.println(date.getYear() + " " + date.getMonth()
+ " "+ date.getDayOfMonth());
A .2018 APRIL 4
B .2018 APRIL 30
C .2018 MAY 10
D .Another date
E .The code does not compile.
F .A runtime exception is thrown.
**正解為F,因為一個月沒有第四十天,所以報錯
** ## 結對及互評
評分標準
- 正確使用Markdown語法(加1分):
- 不使用Markdown不加分
- 有語法錯誤的不加分(鏈接打不開,表格不對,列表不正確...)
- 排版混亂的不加分
- 模板中的要素齊全(加1分)
- 缺少“教材學習中的問題和解決過程”的不加分
- 缺少“代碼調試中的問題和解決過程”的不加分
- 代碼托管不能打開的不加分
- 缺少“結對及互評”的不能打開的不加分
- 缺少“上周考試錯題總結”的不能加分
- 缺少“進度條”的不能加分
- 缺少“參考資料”的不能加分
教材學習中的問題和解決過程, 一個問題加1分
代碼調試中的問題和解決過程, 一個問題加1分
- 本周有效代碼超過300分行的(加2分)
- 一周提交次數少於20次的不加分
- 其他加分:
- 周五前發博客的加1分
- 感想,體會不假大空的加1分
- 排版精美的加一分
- 進度條中記錄學習時間與改進情況的加1分
- 有動手寫新代碼的加1分
- 課後選擇題有驗證的加1分
- 代碼Commit Message規範的加1分
- 錯題學習深入的加1分
- 點評認真,能指出博客和代碼中的問題的加1分
- 結對學習情況真實可信的加1分
- 扣分:
- 有抄襲的扣至0分
- 代碼作弊的扣至0分
- 遲交作業的扣至0分
點評模板:
- 博客中值得學習的或問題:
- xxx
- xxx
- ...
- 代碼中值得學習的或問題:
- xxx
- xxx
- ...
基於評分標準,我給本博客打分:XX分。得分情況如下:xxx
參考示例
點評過的同學博客和代碼
- 本周結對學習情況
- 結對同學學號1
- 結對照片
- 結對學習內容
- XXXX
- XXXX
- ...
上周博客互評情況(只要鏈接,具體點評放相應博客下)
- 學號1
- 學號2
- 學號3
- 學號4
- ...
其他(感悟、思考等,可選)
xxx
xxx
學習進度條
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一周 | 6/6 | 1/1 | 20/20 | |
第二周 | 245/251 | 1/2 | 18/38 | |
第三周 | 633/884 | 1/3 | 22/60 | |
第四周 | 305/1189 | 1/4 | 30/90 | |
第五周 | 410/1599 | 3/7 | 30/120 | |
第六周 | 1135/2734 | 3/10 | 30/150 | |
第七周 | 781/3515 | 3/13 | 30/180 | |
第八周 | 710/4225 | 3/16 | 30/210 | |
第九周 | 775/5000 | 2/18 | 30/240 |
嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進自己的計劃能力。這個工作學習中很重要,也很有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。
參考:軟件工程軟件的估計為什麽這麽難,軟件工程 估計方法
計劃學習時間:XX小時
實際學習時間:XX小時
改進情況:
(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)
參考資料
Java學習筆記(第8版)
- 《Java學習筆記(第8版)》學習指導
...
學號 20175212 《Java程序設計》第九周學習總結