201521123056 《Java程序设计》第14周学习总结
1. 本周学习总结

2. 书面作业
1. MySQL数据库基本操作
建立数据库,将自己的姓名、学号作为一条记录插入。(截图,需出现自己的学号、姓名)
在自己建立的数据库上执行常见SQL语句(截图)
- 参考:实验任务书-题目1
数据库简单操作
1.显示数据库列表: show databases;

2.删除数据库:drop database 数据库名;

3.创建数据库 :create database 数据库名;

4.建表:
use 数据库名;
create table 表名(字段设定列表);

5.显示数据表的表结构: describe 表名;

6.往表中插入数据:insert into 表名 values (”hyq”,”M”);

7.显示表中的记录:select * from 表名;

2. 使用JDBC连接数据库与Statement
2.1 使用Statement操作数据库。(粘贴一段你认为比较有价值的代码,出现学号)
我认为最有价值的就是对命令的处理上:
public static void displayAll() throws ClassNotFoundException //显示所有学生的学号、名字和出生时间,select
{ ///201521123056
String URL = "jdbc:mysql://localhost:3306/test";
String driverName = "com.mysql.jdbc.Driver";
String sql = "select * from student";
String userName = "root";//root
String password = "wujiantong";//123456
Connection conn = null;
Class.forName(driverName);///jdbc4.0 后无需使用这句进行驱动注册操作
try {
conn = DriverManager.getConnection(URL,userName,password);
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
// id | stuno | name | gender | birthdate | major
System.out.println("ID\t学号\t\t姓名\t\t年龄\t生日\t\t");
while(resultSet.next()){
System.out.print(resultSet.getInt("id")+"\t");
System.out.print(resultSet.getString("stuno")+"\t");
System.out.print(resultSet.getString("name")+"\t\t");
System.out.print(resultSet.getInt("age")+"\t");
System.out.print(resultSet.getDate("birthdate"));
System.out.println();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static int insert(Student stu) throws ClassNotFoundException //插入学生,insert
{///201521123056
String URL = "jdbc:mysql://localhost:3306/test";
String driverName = "com.mysql.jdbc.Driver";
String sql = "insert into student (stuno,name,age) values ('"+stu.getStuno()+"','"+stu.getName()+"','"+stu.getAge()+"')";
String userName = "root";//root
String password = "wujiantong";//123456
Connection conn = null;
int resultNum = 0;
Class.forName(driverName);///jdbc4.0 后无需使用这句进行驱动注册操作
try {
conn = DriverManager.getConnection(URL,userName,password);
Statement statement = conn.createStatement();
resultNum = statement.executeUpdate(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void displayAllOrderByIdDesc() throws ClassNotFoundException //打印出学生的ID号、姓名和出生年日期,并按id降序排列。
{///201521123056
String URL = "jdbc:mysql://localhost:3306/test";
String driverName = "com.mysql.jdbc.Driver";
String sql = "select * from student order by id desc";
String userName = "root";//root
String password = "wujiantong";//123456
Class.forName(driverName);///jdbc4.0 后无需使用这句进行驱动注册操作
Connection conn = null;
try {
conn = DriverManager.getConnection(URL,userName,password);
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
// id | stuno | name | gender | birthdate | major
System.out.println("ID\t学号\t\t姓名\t\t年龄\t生日\t\t");
while(resultSet.next()){
System.out.print(resultSet.getInt("id")+"\t");
System.out.print(resultSet.getString("stuno")+"\t");
System.out.print(resultSet.getString("name")+"\t\t");
System.out.print(resultSet.getInt("age")+"\t");
System.out.print(resultSet.getDate("birthdate"));
System.out.println();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static int deleteStudent(int id) throws ClassNotFoundException //按id删除某个学生,返回值为删除学生的个数,delete
{///201521123056
String URL = "jdbc:mysql://localhost:3306/test";
String driverName = "com.mysql.jdbc.Driver";
String sql = "delete from students where id='"+id+"'";
String userName = "root";//root
String password = "wujiantong";//123456
Connection conn = null;
int resultNum = 0;
Class.forName(driverName);///jdbc4.0 后无需使用这句进行驱动注册操作
try {
conn = DriverManager.getConnection(URL,userName,password);
Statement statement = conn.createStatement();
resultNum = statement.executeUpdate(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static int updateStudentAge() throws ClassNotFoundException//将每个学生的年龄+1,update语句
{//201521123056
String URL = "jdbc:mysql://localhost:3306/test";
String driverName = "com.mysql.jdbc.Driver";
String sql = "select * from student";
String userName = "root";//root
String password = "wujiantong";//123456
Connection conn = null;
int Num = 0;
Class.forName(driverName);///jdbc4.0 后无需使用这句进行驱动注册操作
try {
conn = DriverManager.getConnection(URL,userName,password);
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
int age = 0;
while (resultSet.next()) {
age = resultSet.getInt("age");
age ++;
String uesql = "update student set age="+age+" where id="+resultSet.getInt("id");
Class.forName(driverName);
conn = DriverManager.getConnection(URL,userName,password);
Statement statement1 = conn.createStatement();
int resultSet1 = statement1.executeUpdate(uesql);
Num++;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
功能区:

显示显示所有学生的信息:

插入学生:

按id降序排列:

等等功能。
2.2 使用JDBC操作数据库主要包含哪几个步骤?
- 参考:实验任务书-题目2
(1)、装载驱动;
(2)、与数据库建立连接;
(3)、向数据库发送SQL语句;
(4)、获得结果集;
(5)、关闭连接,释放资源;
3. PreparedStatement与参数化查询
3.1 使用PreparedStatement根据用户指定的查询条件进行查询。(粘贴一段你认为比较有价值的代码,出现学号)
//201521123056 查找指定姓名的学生信息
String sql = "select * from student where name=?";
Class.forName(driverName);
conn = DriverManager.getConnection(URL, userName,password);
pStatement = conn.prepareStatement(sql);
pStatement.setInt(1, age);
ResultSet resultSet = pStatement.executeQuery(sql);
System.out.println("ID\t学号\t\t姓名\t\t年龄\t生日\t\t");
System.out.print(resultSet.getInt("id")+"\t");
System.out.print(resultSet.getString("stuno")+"\t");
System.out.print(resultSet.getString("name")+"\t\t");
System.out.print(resultSet.getInt("age")+"\t");
System.out.print(resultSet.getDate("birthdate"));
System.out.println();
3.2 批量更新-批量插入1000个学生,统计整个操作所消耗的时间。(使用方法executeBatch)
- 参考:实验任务书-题目3
public void test() {///201521123056
String URL = "jdbc:mysql://localhost:3306/test";
String driverName = "com.mysql.jdbc.Driver";
String userName = "root";//root
String password = "wujiantong";//123456
PreparedStatement pStatement = null;
Connection conn = null;
try {
conn = DriverManager.getConnection(URL, userName, password);
for (int i = 0; i < 1000; i++) {
String strSql = "insert into students(stuno,name) values(?,?)";
pStatement = conn.prepareStatement(strSql);
pStatement.setString(1, "201521123056");
pStatement.setString(2, "wujiantong");
pStatement.executeUpdate();//添加到同一个批处理中
}
} catch (SQLException e) {
// TODO: handle exception
}finally{
if(conn!=null)
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
conn = null;
}
}
运行时间是335ms:

4. JDBCUtil与DAO
4.1 粘贴一段你认为比较有价值的代码,出现学号
4.2 使用DAO模式访问数据库有什么好处?
参考:实验任务书-题目5
4.2 答:DAO模式指的是将连接与释放连接的操作封装起来,提供访问数据库的同一入口。避免代码的重复使用,将其封装起来也方便出错的时候进行修改。
5. 使用数据库改造购物车系统
5.1 使用数据库改造以前的购物车系统(应有图形界面)。如果以前为完成购物车系统,可编写基于数据库的学生管理系统。包括对学生的增删改查,要求使用。
5.2 相比较使用文件,使用数据库存储与管理数据有何不一样?
选做:6. 批量更新测试
数据库课程上,需要测试索引对查找的加速作用。然而在几百或几千的数据量上进行操作无法直观地体验到索引的加速作用。现希望编写一个程序,批量插入1000万条数据,且该数据中的某些字段的内容可以随机生成。
6.1 截图你的代码(出现学号)、统计运行时间
6.2 计算插入的速度到底有多快?(以条/秒、KB/秒两种方式计算)
选做:7. 事务处理
7.1 使用代码与运行结果证明你确实实现了事务处理功能。(粘贴一段你认为比较有价值的代码,出现学号)
7.2 你觉得什么时候需要使用事务处理?
- 参考:实验任务书-题目4
选做 8. 数据库连接池
使用数据库连接池改写题目5
- 参考:实验任务书-题目4
- 数据连接池参考资料
3. 码云
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

201521123056 《Java程序设计》第14周学习总结的更多相关文章
- 2018面向对象程序设计(Java)第14周学习指导及要求
2018面向对象程序设计(Java)第14周学习指导及要求(2018.11.29-2018.12.2) 学习目标 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及 ...
- 面向对象程序设计(JAVA) 第14周学习指导及要求
2019面向对象程序设计(Java)第14周学习指导及要求 (2019.11.29-2019.12.2) 学习目标 (1)掌握GUI布局管理器用法: (2)掌握Java Swing文本输入组件用途 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 201521123038 《Java程序设计》 第九周学习总结
201521123038 <Java程序设计> 第九周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...
- 20155303 2016-2017-2 《Java程序设计》第二周学习总结
20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...
- 20175221 2018-2019-2 《Java程序设计》第一周学习总结
20175221 2018-2019-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周通过观看书本配套视频,学到了如解释器,编译器等一些简单概念. 还懂得了java的一些简单 ...
- 20175314 《Java程序设计》第九周学习总结
20175314 <Java程序设计>第九周学习总结 教材学习内容总结 根据课本的介绍下载了MySQL和Navicat for MySQL并成功对后者进行破解 MySQL客户端管理工具(如 ...
- 20175314 《Java程序设计》第二周学习总结
20175314 <Java程序设计>第二周学习总结 教材学习内容总结 我在APPstore上发现了一个可以支持我们在IOS系统上学习实践Java程序的开发环境,只需要购买专业版就可以使用 ...
- 20155312 2016-2017-2 《Java程序设计》第九周学习总结
20155312 2016-2017-2 <Java程序设计>第九周学习总结 课堂内容总结 两个类有公用的东西放在父类里. 面向对象的三要素 封装 继承 多态:用父类声明引用,子类生成对象 ...
随机推荐
- shiro
1 权限管理 1.1 什么是权限管理 基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己 ...
- opencv 访问图像像素的三种方式
访问图像中的像素 访问图像像素有三种可行的方法方法一:指针访问指针访问访问的速度最快,Mat类可以通过ptr函数得到图像任意一行的首地址,同时,Mat类的一些属性也可以用到公有属性 rows和cols ...
- python3 接口测试 一般方法
第一步: 导入相关包 import http.client 第二步: 将ip和端口号,使用如下命令,赋值给变量. conn = http.client.HTTPConnection("124 ...
- .NET Core 2.0 开源Office组件 NPOI
前言 去年 12 月,我移植了大家所熟知 NPOI 到 .NET Core 版本,这里是当时发的博客,当时得到了很多同学的支持,社区反应也很好,在这里非常感谢当时推荐的朋友们. 去年的那个版本是针对于 ...
- python-ansible api2.0 多进程执行不同的playbook
自动化运维工具:ansible 多进程调用ansible api的应用场景: 应用系统检查 一个应用系统可能具有20—50台服务器的集群,初步的系统层面检查可以用一个统一的playbook来检查, ...
- Fedora删除旧版本内核
由于Fedora升级非常快,因此非常有必要清除陈旧的内核,否则的话,每次登录系统会出现多个引导项,看着烦人也占用内存: 1.查看当前使用的内核 [root@w ~]# uname -r 4.9.14- ...
- String中的两种实例化方式的区别
直接赋值:(String str = "字符串");只会开辟一块堆内存空间,并且会自动保存在对象池中以供下次重复使用. 构造方法:(String str = new String ...
- Hacking JWT(JSON Web Token)
0x01 JWT工作流程 JSON Web Token(JWT)是一个非常轻巧的规范. 这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息. JWT常被用于前后端分离,可以和Restful ...
- Maven详解(五)------ 坐标的概念以及依赖管理
我们知道maven能帮我们管理jar包,那么它是怎么管理的呢?这篇博客我们来详细介绍. 1.什么是坐标? ①.数学中的坐标 在平面上,使用 X .Y 两个向量可以唯一的定位平面中的任何一个点 在空间中 ...
- amoeba
Amoeba 原理:amoeba相当于业务员,处理client的读写请求,并将读写请求分开处理.amoeba和master以及slave都有联系,如果是读的请求,amoeba就从slave读取信息反馈 ...