1.本周作业总结

1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容。

2.书面作业

Q1. MySQL数据库基本操作

建立数据库,将自己的姓名、学号作为一条记录插入。(截图,需出现自己的学号、姓名)

在自己建立的数据库上执行常见SQL语句(截图)

-参考:实验任务书-题目1

•创建数据库test,并显示所有数据库

•添加自己的信息到表students中,并显示表信息

•再添加第二个学生信息,并显示表信息

•删除第二个学生信息,并显示表信息

•改变自己的学号,并显示表信息

•显示所有的学号

Q2. 使用JDBC连接数据库与Statement

2.1 使用Statement操作数据库。(粘贴一段你认为比较有价值的代码,出现学号)

  1. //201521123027
  2. try {
  3. conn = DriverManager.getConnection(URL,userName,password);
  4. Statement statement = conn.createStatement();
  5. ResultSet resultSet = statement.executeQuery(sql);
  6. while(resultSet.next()){
  7. int id = resultSet.getInt("id");
  8. String stuno = resultSet.getString("stuno");
  9. String name =resultSet.getString("name");
  10. int age =resultSet.getInt("age");
  11. Date date = resultSet.getDate("birthdate");
  12. System.out.print("id="+id+" stuno="+stuno+" name="+name+" age="+age+" birthdate="+date);
  13. }
  14. } catch (SQLException e) {
  15. e.printStackTrace();
  16. }finally{
  17. if(conn!=null)
  18. try {
  19. conn.close();
  20. } catch (SQLException e) {
  21. // TODO Auto-generated catch block
  22. e.printStackTrace();
  23. }
  24. conn = null;
  25. }

结果截图:

2.2 使用JDBC操作数据库主要包含哪几个步骤?

  1. 1)装载驱动;
  2. 2)创建数据库并连接(Connection);
  3. 3)通过连接想数据库发送SQL语句(Statement);
  4. 4)获得结果集(ResultSet);
  5. 5)处理结果;
  6. 6)关闭连接,释放资源。

-参考:实验任务书-题目2

Q3. PreparedStatement与参数化查询

3.1 使用PreparedStatement根据用户指定的查询条件进行查询。(粘贴一段你认为比较有价值的代码,出现学号)

•更新数据

  1. int row = 0;
  2. //根据参数更新数据
  3. String strSql = "update students set name = ? where Id = ?";
  4. pStatement = con.prepareStatement(strSql);
  5. pStatement.setString(1, "chen");
  6. pStatement.setInt(2, 2);
  7. row = pStatement.executeUpdate();
  8. System.out.println("成功更新了"+row+"行数据!");
  9. pStatement.close();//立即释放资源

•根据指定name查找该学生的信息

  1. String strSql = "select * from students where name = ?";
  2. pStatement = con.prepareStatement(strSql);
  3. pStatement.setString(1, "陈龙");
  4. rs = pStatement.executeQuery();
  5. System.out.println("id\t学号 \t\t姓名\t年龄\t出生年月日");
  6. while(rs.next()){
  7. //通过列名取数据
  8. System.out.print(rs.getInt("id")+"\t");
  9. System.out.print(rs.getString("stuno")+"\t");
  10. System.out.print(rs.getString("name")+"\t");
  11. System.out.print(rs.getInt("age")+"\t");
  12. System.out.print(rs.getDate("birthdate"));
  13. System.out.println();
  14. }
  15. pStatement.close();//立即释放资源

3.2 批量更新-批量插入1000个学生,统计整个操作所消耗的时间。对比普通方法插入与使用executeBatch方法所消耗的时间。(使用JUint4测试,需要出现时间对比截图)

参考:实验任务书-题目3

普通方法insert():

  1. //201521123027
  2. for(int i=0;i<1000;i++){
  3. String strSql = "insert into students(stuno,name,age,birthdate) values(?,?,?,?)";
  4. pStatement = con.prepareStatement(strSql);
  5. pStatement.setString(1, "201521123027");
  6. pStatement.setString(2, "c");
  7. pStatement.setInt(3, 18);
  8. pStatement.setString(4, "1997-05-01");
  9. }

executeBatch方法:

  1. //201521123027
  2. for(int i=0;i<1000;i++){
  3. String strSql = "insert into students(stuno,name,age,birthdate) values(?,?,?,?)";
  4. pStatement = con.prepareStatement(strSql);
  5. pStatement.setString(1, "201521123027");
  6. pStatement.setString(2, "c");
  7. pStatement.setInt(3, 18);
  8. pStatement.setString(4, "1997-05-01");
  9. pStatement.addBatch();//添加到同一个批处理中
  10. }
  11. pStatement.executeUpdate();
  12. pStatement.close();//立即释放资源

时间对比截图:

Q4. JDBCUtil与DAO

4.1 粘贴一段你认为比较有价值的代码,并说明为什么要摘取这段代码。出现学号

  1. //201521123027
  2. @Override
  3. public List<Student> findAll() {
  4. // TODO Auto-generated method stub
  5. Connection conn = null;
  6. Statement stat = null;
  7. ResultSet rs = null;
  8. Student stu=null;
  9. List<Student> students=new ArrayList<Student>();
  10. String sql = "select * from student";
  11. try {
  12. conn = JDBCUtil.getConnection();
  13. stat = conn.createStatement();
  14. rs = stat.executeQuery(sql);
  15. while(rs.next()){
  16. stu=new Student(rs.getInt("id"),rs.getString("name"));
  17. students.add(stu);
  18. }
  19. }catch (SQLException sqle) {
  20. sqle.printStackTrace();
  21. }catch(Exception e){
  22. e.printStackTrace();
  23. }finally{
  24. JDBCUtil.realeaseAll(rs,stat, conn);
  25. }
  26. return students;
  27. }

4.2 使用DAO模式访问数据库有什么好处?

参考:实验任务书-题目5

  1. DAO模式的使用相当于建立一个接口,接口中有我们所需要的方法。在程序中,当需要和数据进行交互的时候则使用这个接口,并且编写一个实现类来实现这个接口上的方法,可以很清晰的知道interface DAO接口的类有什么功能,代码之间的关系清晰。而且之后我们需要对程序的修改的话,只需对DAO模式中的某个方法修改即可,不需要整个项目都进行修改,修改范围变小,工作量减少。

Q5. 使用数据库改造购物车系统

5.1 使用数据库改造以前的购物车系统(应有图形界面)。如果以前为完成购物车系统,可编写基于数据库的学生管理系统。包括对学生的增删改查,要求使用。

5.2 相比较使用文件,使用数据库存储与管理数据有何不一样?

  1. 1)在数据读取时,使用文件速度比较慢,而使用数据库时读取速度更快,效率更高些;
  2. 2)使用数据库时需要设置密码,这就限制了访问数据库的对象,相对于使用文件,安全性更高,内容泄露的可能性低;
  3. 3)使用文件时需要打开文件,存放数据再关闭文件,而使用数据库只需输入相应的命令即可实现。

3.码云

3.1. 码云代码提交记录

201521123027<java程序设计>第14周作业总结的更多相关文章

  1. 201521123027 <java程序设计>第13周学习总结

    1.本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2.书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu.e ...

  2. 201521123027 <java程序设计>第11周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2.书面作业 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synchro ...

  3. 201621123062《java程序设计》第九周作业总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 思维导图1:(对集合部分做了一些改动和细化) 思维导图2:(泛型) 1.2 选做:收集你认为有用的代码片段 代 ...

  4. 201521123027 <java程序设计>第七周学习总结

    1.本周学习总结 2.书面作业 Q1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 答: 源代码: //contains()方法 public boolean c ...

  5. 201521123027 <java程序设计>第十周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 异常: 多线程: 2.书面作业 Q1.finally 题目4-2 1.1 截图你的提交结果(出现学号) 1.2 ...

  6. 201521123027 <java程序设计>第八周学习总结

    1.本周学习总结 1.1思维导图 2.书面作业 Q1.List中指定元素的删除(题目4-1) 1.1 实验总结 总结:判断List中是否存在指定元素,需要用到equals方法,若存在就用remove进 ...

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

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

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

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

  9. 201521123072《java程序设计》第九周总结

    201521123072<java程序设计>第九周总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 常用异常 题目5-1 1.1 截 ...

随机推荐

  1. 小白对Salesforce的简单认识(01)

    1. Salesforce为我们提供的服务? Salesforce基于云平台为我们提供SAAS和 PAAS服务. SAAS(Salesforce.com is Software as a Servic ...

  2. 像VUE一样写微信小程序-深入研究wepy框架

    像VUE一样写微信小程序-深入研究wepy框架 微信小程序自发布到如今已经有半年多的时间了,凭借微信平台的强大影响力,越来越多企业加入小程序开发. 小程序于M页比相比,有以下优势: 1.小程序拥有更多 ...

  3. github+hexo搭建自己的博客网站(一)基础入门

    github提供的page,hexo提供的静态博客文档,这样可以搭建一个自己的一个博客网站. 使用github pages服务搭建博客的好处有: 全是静态文件,访问速度快: 免费方便,不用花一分钱就可 ...

  4. 获取token之后,再调用匿名方法

    js获取token bpm.api.beginDownload = function (filePath, fileName) { var url = "/Home/GetToken&quo ...

  5. 【Ubuntu 16】显示管理器lightdm

    lightdm是一个全新的轻量级的显示管理器,在Ubuntu16.04上面已经使用. 从图形界面进入到命令行界面 systemctl disable lightdm.service 从命令行进入到图形 ...

  6. innerHTML innerText的使用和区别

    document对象中有innerHTML.innerText这两个属性,都是获取document对象文本内容,但使用起来还是有区别的: 1) innerHTML设置或获取标签所包含的HTML+文本信 ...

  7. form enctype参数

    application/x-www-form-urlencoded 表示在发送前编码所有字符(默认) multipart/form-data 不对字符编码.在使用包含文件上传控件的表单时,必须使用该值 ...

  8. 1_NAT模式和桥接模式下的网络配置

    相信当你看到这篇文章时,你一定对linux的桥接模式和NAT模式有所了解,所以你应该是能看懂这篇文件的,希望对你有所帮助,figthing    ! 一.桥接模式:虚拟机和主机是连在同一个路由下的. ...

  9. Coursera无法正常提交作业

    如下图,upload服务貌似被墙了,想要提交作业的话需要临时科学上网.

  10. 菜单栏—View(视图)菜单