201521123038 《Java程序设计》 第十四周学习总结


1. 本周学习总结

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

  • 接口
  • DriverManager:加载驱动、建立连接
  • Connection:数据库连接
  • Statement:处理连接中的SQL语句
  • ResultSet:处理结果集
  • 释放资源顺序
  • ResultSet
  • Statement
  • Connection
  • PreparedStatement比普通的Statement对象使用起来更加灵活,更有效率,多次执行sql语句时建议使用

  • 多次对数据库进行操作,可以将获得连接与释放连接的操作封装起来,提供访问数据库的统一入口


2. 书面作业

1. MySQL数据库基本操作

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

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


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

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

  • 查询表内记录数量

//201521123038
sql = "select count(*) from students";
rs = statement.executeQuery(sql);
if(rs.next()){
resultNum = rs.getInt(1);
System.out.println("数据库存在"+resultNum+"条记录数据库");
}
  • 警告提示Establishing SSL connection without server's identity verification is not recommended,原因是就是使用JDBC和数据库连接时,JDBC版本与MySQL版本不兼容,MySQL的版本更高一些。

  • String URL = "jdbc:mysql://localhost:3306/test";修改为String URL = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=GBK&useSSL=false";

运行结果:

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

  • 装载JDBQ驱动,使用 Class.forName(driverName),jdbc4.0不需要手动加载
  • 创建数据库的连接(Connection)
  • 创建SQL语句(Statement)
  • 通过语句获得结果集(ResultSet)
  • 处理结果集
  • 关闭JDBC对象,释放资源

3. PreparedStatement与参数化查询

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

  • 查找语句

//201521123038
System.out.println("\n查找major=ne\n");
strSql = "select * from students where major = ?";
pStatement = con.prepareStatement(strSql);
pStatement.setString(1, "ne");
rs = pStatement.executeQuery();
System.out.println("学号\t\t姓名\t出生日期\t\t专业");
while(rs.next()){ System.out.print(rs.getString("stuno")+"\t\t");
System.out.print(rs.getString("name")+"\t");
System.out.print(rs.getDate("birthdate")+"\t");
System.out.print(rs.getString("major")+"\t\n");
}
  • 取数据有通过列的下标取数据和通过列名取数据两种方法,最好使用后者

运行结果:

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

时间对比:


4. JDBCUtil与DAO

4.1 粘贴一段你认为比较有价值的代码,出现学号


//201521123038
@Override
public int add(Student student) {
Connection conn = null;
PreparedStatement pstat = null;
String sql = "insert into students(id,name) values(?,?) ";
int result = -1; try {
conn = JDBCUtil.getConnection();//建立连接
pstat = conn.prepareStatement(sql);
pstat.setInt(1, student.getId());
pstat.setString(2, student.getName());
result = pstat.executeUpdate(); }catch (SQLException sqle) {
sqle.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtil.realeaseAll(null,pstat, conn);
}
return result>0?1:-1;
}

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

  • 创建JDBCUtil,将获得连接与释放连接的操作封装起来,提供访问数据库的统一入口。在进行主要操作的时候不用编写处理数据库的全部代码,避免出错,增加代码的安全性。
  • 创建Dao接口,实现面向接口编程,可以有不同的实现类。

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

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

diplayAllStudent代码,其他功能都大同小异:

运行结果:

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

  • 文件管理容易发生因操作失误导致的文件删除或者内容更改,相较之下数据库安全性更高
  • 数据库处理数据比文件处理效率更高,例:制作APP需要庞大的后台数据,使用文件不方便管理,一般大型开发都要使用数据库存储
  • 写入数据时使用文件虽然比使用数据库操作代码方便,但是查询和统计文件中的数据不如使用数据库方便

3. 码云

3.1. 码云代码提交记录

201521123038 《Java程序设计》 第十四周学习总结的更多相关文章

  1. 201521123038 《Java程序设计》 第四周学习总结

    201521123038 <Java程序设计> 第四周学习总结 1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 1.通过 ins ...

  2. 201871010106-丁宣元 《面向对象程序设计(java)》第十四周学习总结

    201871010106-丁宣元 <面向对象程序设计(java)>第十四周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nw ...

  3. 20165235 祁瑛 2018-3 《Java程序设计》第四周学习总结

    20165235 祁瑛 2018-3 <Java程序设计>第四周学习总结 教材学习内容总结 第五单云总结 (一)子类与继承1.java中子类只能有一个父类,在类名前用extends标记.2 ...

  4. 20145213《Java程序设计》第四周学习总结

    20145213<Java程序设计>第四周学习总结 教材学习内容总结 本周任务是学习面向对象的继承.接口以及之后的如何活用多态.(还真是路漫漫其修远兮啊!)教材也是延续上周艰深晦涩的语言风 ...

  5. 20145330《Java程序设计》第四周学习总结

    20145330<Java程序设计>第四周学习总结 一周两章新知识的自学与理解真的是很考验和锻炼我们,也对前面几章我们的学习进行了检测,遇到忘记和不懂的知识就再复习前面的,如此巩固也让我对 ...

  6. 20145337《Java程序设计》第四周学习总结

    20145337<Java程序设计>第四周学习总结 教材学习内容总结 继承与多态 继承 继承,避免多个类间重复定义共同行为 符合DRY(Don't Repeat Yourself)原则,多 ...

  7. 20145218 《Java程序设计》第四周学习总结

    20145218 <Java程序设计>第四周学习总结 教材学习内容总结 继承 继承共同行为 继承基本上就是避免多个类间重复定义共同行为. 继承的三个好处:减少代码冗余:维护变得简单:扩展变 ...

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

    20145224-陈颢文 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承与多态 ·继承就是面向对象中,子类继承父类,避免重复的行为定义.重复再程序设计上是非常不好的信号 ...

  9. 20155304 2016-2017-2 《Java程序设计》第四周学习总结

    20155304 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承: 概念: 面向对象中,为避免多个类间重复定义共同行为.(简单说就是将相同的程序 ...

  10. 201521123061 《Java程序设计》第四周学习总结

    201521123061 <Java程序设计>第四周学习总结 1. 本章学习总结 (1)思维导图: --- (2)上课内容总结: 第四周学习了Java中的继承与多态,思维导图中已经给出了本 ...

随机推荐

  1. 简析SNS社交系统"ThinkSNS V4"与"ThinkSNS+"的区别

    ThinkSNS是什么? ThinkSNS(简称TS),一款全平台综合性sns社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+(简称TS+),也称 ...

  2. Swoole笔记(四)

    Process Process是swoole内置的进程管理模块,用来替代PHP的pcntl扩展. swoole_process支持重定向标准输入和输出,在子进程内echo不会打印屏幕,而是写入管道,读 ...

  3. vue如何封装自己需要的方法

    因为现在vue的流行,vue的各种插件都出来了,我们公司也是使用vue做项目,我自己在做项目的时候自己去琢磨了其他的插件以及结合自己对vue和es2015的理解,自己找的了一种在vue中使用封装方法的 ...

  4. co源码解析

    一.co函数是什么 co 函数库是著名程序员 TJ Holowaychuk 于2013年6月发布的一个小工具,用于 Generator 函数的自动执行.短小精悍只有短短200余行,就可以免去手动编写G ...

  5. Java 垃圾回收机制(早期版本)

    Java 垃圾回收机制在我们普通理解来看,应该视为一种低优先级的后台进程来实现的,其实早期版本的Java虚拟机并非以这种方式实现的. 先从一种很简单的垃圾回收方式开始. 引用计数 引用计数是一种简单但 ...

  6. Linux+.NetCore+Nginx搭建集群

    本篇和大家分享的是Linux+NetCore+Nginx搭建负载集群,对于netcore2.0发布后,我一直在看官网的文档并学习,关注有哪些新增的东西,我,一个从1.0到2.0的跟随者这里只总结一句话 ...

  7. PyQt4 初试牛刀一

    建立了一个MainWindow,创建最基本的菜单栏.状态栏.工具栏,并重新定义了"X"关闭的默认行为. # -*- coding: utf-8 -*- import sys fro ...

  8. 新手学习SEO要做的七件事是什么?

    学习SEO可能不那么先进的编程,学习SEO不可能掌握网页设计,学习SEO不需要学习SEO DIV + CSS;不是一个困难的任务,但是在学习过程中,如果你想掌握SEO,那么我们要做的几件事. 1.学习 ...

  9. 进程管理之system

    system定义 #include<stdlib.h> int system(const char *command); 首先要知道,system函数是c库中的函数,而不是系统调用.其实s ...

  10. 近期学习的原生JS知识以及jQuery框架

    [正则表达式]1.正则表达式包括两部分: ① 定义正则表达式的规则 ② 定义正则表达式的模式(i/g/m)2.声明正则表达式: ① 字面声明 : var reg = /表达式规则/表达式模式 ② 使用 ...