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周学习总结的更多相关文章

  1. 2018面向对象程序设计(Java)第14周学习指导及要求

    2018面向对象程序设计(Java)第14周学习指导及要求(2018.11.29-2018.12.2)   学习目标 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及 ...

  2. 面向对象程序设计(JAVA) 第14周学习指导及要求

    2019面向对象程序设计(Java)第14周学习指导及要求 (2019.11.29-2019.12.2)   学习目标 (1)掌握GUI布局管理器用法: (2)掌握Java Swing文本输入组件用途 ...

  3. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 201521123038 《Java程序设计》 第九周学习总结

    201521123038 <Java程序设计> 第九周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...

  6. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

  7. 20175221 2018-2019-2 《Java程序设计》第一周学习总结

    20175221 2018-2019-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周通过观看书本配套视频,学到了如解释器,编译器等一些简单概念. 还懂得了java的一些简单 ...

  8. 20175314 《Java程序设计》第九周学习总结

    20175314 <Java程序设计>第九周学习总结 教材学习内容总结 根据课本的介绍下载了MySQL和Navicat for MySQL并成功对后者进行破解 MySQL客户端管理工具(如 ...

  9. 20175314 《Java程序设计》第二周学习总结

    20175314 <Java程序设计>第二周学习总结 教材学习内容总结 我在APPstore上发现了一个可以支持我们在IOS系统上学习实践Java程序的开发环境,只需要购买专业版就可以使用 ...

  10. 20155312 2016-2017-2 《Java程序设计》第九周学习总结

    20155312 2016-2017-2 <Java程序设计>第九周学习总结 课堂内容总结 两个类有公用的东西放在父类里. 面向对象的三要素 封装 继承 多态:用父类声明引用,子类生成对象 ...

随机推荐

  1. JAVASCRIPT 调用 其他应用程序的方法

    在上一篇中就已经提供了一种方法,就是通过自己写OCX 给OCX 传入路径,通过OCX 启动应用程序.当然这种方法可扩展性很多,不一定是启动应用程序了.今天提供另一种比较简单的可以启动应用程序的方法,不 ...

  2. ubuntu下动态链接库小计

    只记录下具体操作代码,以后再做补充 1,gcc -Wall -fPIC -c test4.c 2,gcc -g -shared -Wl,-soname,libtests.so -o libtests. ...

  3. 关于视频编辑SDK的接入说明

    一.运行环境 Android 4.1(api 16)以上: 处理器:双核 1GHz以上CPU(目前只支持ARM CPU, X86.MIPS暂不支持):推荐四核1.2GHz以上CPU 内存:1 GB以上 ...

  4. Python 字典和集合

    泛映射类型 collections.abc 模块中有 Mapping 和 MutableMapping 这两个抽象基类,它们的作用是为 dict 和其他类似的类型定义形式接口(在Python 2.6 ...

  5. Github 开源:使用 .NET WinForm 开发所见即所得的 IDE 开发环境(Sheng.Winform.IDE)【2.源代码简要说明】

    GitHub:https://github.com/iccb1013/Sheng.Winform.IDE 在上一篇文章中,简要的介绍了  Sheng.Winform.IDE 的基本功能和要实现的目标: ...

  6. Entity Framework : The model backing the '' context has changed since the database was created

    1.采用code first 做项目时,数据库已经生成,后期修改数据库表结构.再次运行时出现一下问题: Entity Framework : The model backing the '' cont ...

  7. TP-Link路由器的设置

    TP-Link路由器的设置.. 路由器中TP-Link是公认比较好用的品牌. 将TP-Link路由器的Lan与电脑连接.拔掉Wan口上的线. 注:tplink的路由器默认IP基本都是192.168.1 ...

  8. 装饰模式(decorator)

    意图: 动态地给一个对象添加一些额外的职责,就增加功能而言,Decorator模式相比生成子类模式更为灵活 动机: 有时我们希望给某个对象而不是整个类添加一些功能.例如,一个图形用户界面工具箱允许你对 ...

  9. Druid使用记录

    最近项目稳定下来,就像折腾一下看看系统的运行情况,但是我们搞java的毕竟不是专业运维,看看数据库的运行情况就ok了. 1 Druid介绍 官方地址 https://github.com/alibab ...

  10. [2016-09-23]远程安装、更新windows服务bat脚本分享

    话不多说,有兴趣的自己可以仔细研究下涉及的命令:net use.sc.robocopy 脚本 set BuildConfig=[ENV] set BuildExeName=[your_exe_name ...