教材学习内容总结
一, 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 小时
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表 http://www.cnblogs.com/xinz/p/3852177.html )
参考资料
Java 学习笔记(第 8 版) http://book.douban.com/subject/26371167/
《Java 学习笔记(第 8 版)》学习指导 http://www.cnblogs.com/rocedu/p/5182332.html
...
来源: http://www.bubuko.com/infodetail-3037870.html