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. RMAN基础恢复测试

    --RMAN恢复测试实战   RMAN> list backup;   using target database control file instead of recovery catalo ...

  2. /dev/null 2>&1解释

    /dev/null 2>&1 解释 crontab内容 :50 18 5-30 * * /script/myscript.sh 1> /dev/null 2>&1 其 ...

  3. ReactiveCocoa应用篇(一)

    作为函数式编程和响应式编程的代表ReactiveCocoa,自一出世便受到广大码农的热爱,结合MVVM编程模式,不仅能够方便的处理各种交互事件.降低模块间的耦合性,还能简化项目结构,降低阅读和维护的成 ...

  4. .net core 2.0学习笔记(五):程序配置&ConfigurationManager

    配置组件是.net framework中非常常用的功能.在创建.net framework 工程时,系统不仅会自动生成app.config文件,而且还提供了非常强大的访问类库.但是这些好东西,在.ne ...

  5. Linux(Fedora) 安装 Oracle XE Database

    Fedora 安装 Oracle XE Database Fedora 20Oracle XeOracle VM VirtualBoxFedora 安装oracle 数据库 环境: Oracle VM ...

  6. Python 文档 涉及词汇

    Python  is an interpreted, interactive, object-oriented programming language that combines remarkabl ...

  7. CSS高级技巧

    使用CSS复位 CSS复位可以在不同的浏览器上保持一致的样式风格.您可以使用CSS reset 库Normalize等,也可以使用一个更简化的复位方法:· * { box-sizing: border ...

  8. PHP导出excle图片与文字

    try { //CI框架引入PHPExcel $this->load->library('PHPExcel'); $objPHPExcel = new PHPExcel(); //图片处理 ...

  9. 专业运维配的vsftpd.conf

    需要另外写userlist,下面的配置文件可以参考,这是使用云镜像市场的全能java环境装的机. [root@VM_1_202_centos vsftpd]# cat vsftpd.conf # Ex ...

  10. sublime text3开发python并设置快捷键

    Package Control 安装方法 1.通过快捷键 ctrl+` 或者 View > Show Console 打开控制台,然后粘贴相应的 Python 安装代码: 2.Sublime T ...