学号 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小时

  • 改进状况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

相关文章
相关标签/搜索