20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结
教材学习内容总结
第十一章 JDBC数据库操作
-
MySQL数据库管理系统
- 下载安装MySQL
- 若下载的是压缩包形式(书上提供的),需要配置环境变量;若是msi文件,直接安装即可
- 下载安装MySQL
-
MySQL客户端管理工具
- 下载并安装老师推荐使用的xampp
- 输入测试连接状态代码
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() ? "关闭" : "打开");
}
}
}
-
JDBC-MySQL数据库驱动
- 下载并安装JDBC-MySQL数据库驱动——mysql-connector-java-8.0.16
- 在IDEA中添加jar包
-
查询操作
- 得到SQL查询语句对象
try{ Statement sql=con.createStatement();
}
catch(SQLException e ){}
-
处理查询结果
- SQL查询语句对数据库的查询操作将返回一个ResultSet对象,ResultSet对象是按“列”(字段)组织的数据行构成。
ResultSet rs = sql.executeQuery("SELECT * FROM students");
- ResultSet对象一次只能看到一个数据行,使用next()方法移到下一个数据行,获得一行数据后,ResultSet对象可以使用getXxx方法获得字段值(列值),将位置索引(第一列使用1,第二列使用2等)或列名传递给getXxx方法的参数即可。
- SQL查询语句对数据库的查询操作将返回一个ResultSet对象,ResultSet对象是按“列”(字段)组织的数据行构成。
-
关闭连接
- 应用程序在使用ResultSet对象中的数据时,就必须始终保持和数据库的连接,直到应用程序将ResultSet对象中的数据查看完毕
-
更新、添加与删除操作
- 更新
update 表 set 字段 = 新值 where <条件子句>
- 添加
insert into 表(字段列表) values (对应的具体的记录)
insert into 表 values (对应的具体的记录)
- 删除
delete from 表名 where <条件子句>
- 更新
-
使用预处理语句
- 如果应用程序能针对连接的数据库,事先就将SQL语句解释为数据库底层的内部命令,然后直接让数据库去执行这个命令,显然不仅减轻了数据库的负担,而且也提高了访问数据库的速度。
- Connection和某个数据库建立了连接对象con,那么con就可以调用
prepareStatement(String sql)
方法对参数sql指定的SQL语句进行预编译处理,生成该数据库底层的内部命令,并将该命令封装在PreparedStatement对象中
-
通用查询
- 用户将数据库名、SQL语句传递给该类对象,那么该对象就用一个二维数组返回查询的记录。
- metaData调用
getColumnName(int i)
方法就可以返回结果集rs中的第i列的名字:String columnName = metaData.getColumnName(i);
- metaData调用
- 用户将数据库名、SQL语句传递给该类对象,那么该对象就用一个二维数组返回查询的记录。
-
事务:应用程序保证事务中的SQL语句要么全部都执行,要么一个都不执行。
- JDBC事务处理步骤
- 用setAutoCommit(booean b)方法关闭自动提交模式
- 用commit()方法处理事务
- 用rollback()方法处理事务失败用rollback()方法处理事务失败
- JDBC事务处理步骤
教材学习中的问题和解决过程
- 无
代码调试中的问题和解决过程
代码托管
上周考试错题总结
无
结对及互评
博客中值得学习的或问题:
该同学把安装过程都截图保存至博客。
感觉感悟那一块的内容可以在具体一点,比如说具体遇到什么问题,如何解决,从中收获了什么,或是教材学习中增长的关于调试代码的经验。
-
代码中值得学习的或问题:
- 无
基于评分标准,我给本博客打分:11分。得分情况如下:正确使用Markdown语法(加1分);模板中的要素齐全(加1分);教材学习中的问题和解决过程, 一个问题加1分;代码调试中的问题和解决过程, 一个问题加1分;本周有效代码超过300分行的(加2分);排版精美的加一分;代码Commit Message规范的加1分;点评认真,能指出博客和代码中的问题的加1分;结对学习情况真实可信的加1分
点评过的同学博客和代码
-
本周结对学习情况
-
结对照片
- 结对学习内容
- 第十一章学习
- MyCP编程
- 结对学习内容
其他(感悟、思考等,可选)
- 本周对于数据库进行了初步学习,之前学过文件读取输出,类比本周学习内容,数据库是一个储存相同类型数据很好的媒介。
- 在运行程序时遇到了很多问题,要学会新软件的基本操作,出现错误提示时,要根据错误提示进行适当修改,不能贸然根据网络上教程乱改程序
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
第一周 | 11/11 | 1/1 | ||
第二周 | 262/273 | 1/2 | ||
第三周 | 642/915 | 1/3 | ||
第四周 | 384/1299 | 2/5 | ||
第五周 | 661/1960 | 1/6 | ||
第六周 | 1031/2991 | 2/8 | ||
第七周 | 123/3114 | 2/10 | ||
第八周 | 941/4055 | 2/12 | ||
第九周 | 1697/5752 | 4/16 |