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程序设计>第九周学习总结 课堂内容总结 两个类有公用的东西放在父类里. 面向对象的三要素 封装 继承 多态:用父类声明引用,子类生成对象 ...
随机推荐
- bash编程总结
bash应该是目前Linux上最流行的shell脚本解释程序了(还有个shell叫dash,我太讨厌这个东东了.),只要你在linux上工作,并且希望自己能够工作得更愉悦,那么你应该熟悉最基本的bas ...
- window下MongoDB的配置与安装
前言 MongoDB 是一个基于分布式文件存储的数据库.由C++语言编写,支持Windows,Linux,OSX,Solaris等平台,默认端口为27017,是一个效率非常高的nosql数据库. 我的 ...
- PHP学习之旅——PHP环境搭建
1.wampserver.exe软件下载 http://www.wampsferver.com/官网地址: 选择对应版本下载即可. 2.wampserver服务控制面板 主要控制的是整个wampse ...
- elasticsearch映射
前面讲到,无论是关系型数据库还是非关系型数据库,乃至elasticsearch这种事实上承担着一定储存作用的搜索引擎,数据类型都是非常重要而基础的概念.但elasticsearch与其它承担着数据存储 ...
- BYS推荐MS前端PhoneCall面试问题整理-2
JS:1. 如何为一个已有的对象加一个新的方法,Prototype,这个不仅要知道,还要用过,写过 2. Angular和Ember比较的优势或不同点在哪里 3. null和undefined的区别, ...
- tensorflow笔记(二)之构造一个简单的神经网络
tensorflow笔记(二)之构造一个简单的神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7425200.html ...
- Ecplise插件安装方法
eclipse3.5以前: 安装Eclipse插件无非两种方式: 1.直接copy插件到features/plugins目录 2.在links目录下创建链接文件 eclipse3.5及以后版本: 1. ...
- 使用GitHub Pages+Jekyll搭建个人博客
GitHub Pages 免费无限容量的站点数据托管工具(国内访问速度较慢),内置Jekyll服务,能将特定名称的代码仓库动态编译为静态网页 Jekyll 基于Ruby的静态网页生成系统,采用模板将M ...
- 【Ubuntu 16】深入Ubuntu文件系统
Ubuntu文件系统的设计目的就是把文件有序地组织在一起,提供一个从逻辑上组织文件的文件系统.除了文件的组织外,文件安全也是文件系统的设计要点,所以文件的访问权限是文件系统不可缺少的组成部分 Ubun ...
- Java6和Java8在Windows上共存
0x00 需求 最近在做一个Android的项目,一开始安装的是Java8用于项目的开发.但是在项目后期需要用到drozer用于检测项目的安全性,要搭建drozer的测试环境必须要使用Java6,否则 ...