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

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

教材學習內容總結

1、MySQL數據庫管理系統

1.在官網上下載並安裝MySQLhtml

2.在IDEA中輸入測試代碼ConnectionDemo.javajava

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() ? "關閉" : "打開");
        } 
    }
}

2、MySQL客戶端管理系統

1.使用老師推薦的XAMPP,在官網進行下載mysql

2.成功鏈接MySQL,以下圖
輸入圖片說明git

3.用瀏覽器輸入http://127.0.0.1 打開XAMPP。
輸入圖片說明sql

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;

3、鏈接數據庫

1.在官網https://dev.mysql.com/downloads/connector/j/ 上下載驅動學習

mysql-connector-java-5.1.41-bin.jar

2.在IDEA中添加驅動,以下圖:測試

輸入圖片說明

3.運行示例代碼,顯示成功鏈接以下圖
輸入圖片說明設計

4、查詢操做

  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子語句對記錄排序

5、更新、添加與刪除

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

  • 參考示例

點評過的同窗博客和代碼

其餘(感悟、思考等,可選)

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小時

  • 改進狀況:

(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表
)

參考資料

相關文章
相關標籤/搜索