1. 程式人生 > >學號 20175212 《Java程序設計》第九周學習總結

學號 20175212 《Java程序設計》第九周學習總結

一個數 dao util exceptio otf lang 指導 incr title

學號 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.運行示例代碼,顯示成功連接如下圖
技術分享圖片

四、查詢操作

  1. 得到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.條件與排序查找

  1. where子語句

一般格式: select 字段 from 表名 where 條件

(1) 字段值和固定值比較,例如:select name,height from mess where name=‘李四‘

(2) 字段值在某個區間範圍,例如:select * from mess where height>1.60 and height<=1.8

  1. 排序

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,因為一個月沒有第四十天,所以報錯

** ## 結對及互評

評分標準

  1. 正確使用Markdown語法(加1分):
    • 不使用Markdown不加分
    • 有語法錯誤的不加分(鏈接打不開,表格不對,列表不正確...)
    • 排版混亂的不加分
  2. 模板中的要素齊全(加1分)
    • 缺少“教材學習中的問題和解決過程”的不加分
    • 缺少“代碼調試中的問題和解決過程”的不加分
    • 代碼托管不能打開的不加分
    • 缺少“結對及互評”的不能打開的不加分
    • 缺少“上周考試錯題總結”的不能加分
    • 缺少“進度條”的不能加分
    • 缺少“參考資料”的不能加分
  3. 教材學習中的問題和解決過程, 一個問題加1分

  4. 代碼調試中的問題和解決過程, 一個問題加1分

  5. 本周有效代碼超過300分行的(加2分)
    • 一周提交次數少於20次的不加分
  6. 其他加分:
    • 周五前發博客的加1分
    • 感想,體會不假大空的加1分
    • 排版精美的加一分
    • 進度條中記錄學習時間與改進情況的加1分
    • 有動手寫新代碼的加1分
    • 課後選擇題有驗證的加1分
    • 代碼Commit Message規範的加1分
    • 錯題學習深入的加1分
    • 點評認真,能指出博客和代碼中的問題的加1分
    • 結對學習情況真實可信的加1分
  7. 扣分:
    • 有抄襲的扣至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程序設計》第九周學習總結