201521123038 《Java程序设计》 第十四周学习总结
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程序设计》 第十四周学习总结的更多相关文章
- 201521123038 《Java程序设计》 第四周学习总结
201521123038 <Java程序设计> 第四周学习总结 1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 1.通过 ins ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第十四周学习总结
201871010106-丁宣元 <面向对象程序设计(java)>第十四周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nw ...
- 20165235 祁瑛 2018-3 《Java程序设计》第四周学习总结
20165235 祁瑛 2018-3 <Java程序设计>第四周学习总结 教材学习内容总结 第五单云总结 (一)子类与继承1.java中子类只能有一个父类,在类名前用extends标记.2 ...
- 20145213《Java程序设计》第四周学习总结
20145213<Java程序设计>第四周学习总结 教材学习内容总结 本周任务是学习面向对象的继承.接口以及之后的如何活用多态.(还真是路漫漫其修远兮啊!)教材也是延续上周艰深晦涩的语言风 ...
- 20145330《Java程序设计》第四周学习总结
20145330<Java程序设计>第四周学习总结 一周两章新知识的自学与理解真的是很考验和锻炼我们,也对前面几章我们的学习进行了检测,遇到忘记和不懂的知识就再复习前面的,如此巩固也让我对 ...
- 20145337《Java程序设计》第四周学习总结
20145337<Java程序设计>第四周学习总结 教材学习内容总结 继承与多态 继承 继承,避免多个类间重复定义共同行为 符合DRY(Don't Repeat Yourself)原则,多 ...
- 20145218 《Java程序设计》第四周学习总结
20145218 <Java程序设计>第四周学习总结 教材学习内容总结 继承 继承共同行为 继承基本上就是避免多个类间重复定义共同行为. 继承的三个好处:减少代码冗余:维护变得简单:扩展变 ...
- 《Java程序设计》第四周学习总结
20145224-陈颢文 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承与多态 ·继承就是面向对象中,子类继承父类,避免重复的行为定义.重复再程序设计上是非常不好的信号 ...
- 20155304 2016-2017-2 《Java程序设计》第四周学习总结
20155304 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承: 概念: 面向对象中,为避免多个类间重复定义共同行为.(简单说就是将相同的程序 ...
- 201521123061 《Java程序设计》第四周学习总结
201521123061 <Java程序设计>第四周学习总结 1. 本章学习总结 (1)思维导图: --- (2)上课内容总结: 第四周学习了Java中的继承与多态,思维导图中已经给出了本 ...
随机推荐
- HDU 6153 拓展KMP (2017CCPC)
A Secret Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 256000/256000 K (Java/Others)Total ...
- ExoPlayer Talk 01 缓存策略分析与优化
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Android studio 2.3.3 | ExoPlayer r2.5.1 使用 ExoPlayer已经有一段时间了, ...
- js原型学习
js中所有对象都存在一个隐式原型_ _proto_ _,指向创建这个对象的函数的原型prototype; 而函数的原型prototype都是Object函数的一个对象,也有隐式原型,指向的就是Obje ...
- UE4 距离场简单分析
距离上一篇博客已经有点久了,中间忙的飞起,忽然发现很久没写了,这样不好,写一篇和工作无关的吧. 一直想搞清UE4距离场的原理,网上有几乎找不到任何有关UE4距离场实现的内容,加上上篇末说要写一个完全的 ...
- sublime text 的小细节设置,让你的代码更优美
这些属性都可以在 首选项>设置-默认 里修改下面也会介绍几个比较常用的几个插件 字体大小: "font_size": 17 高亮编辑中的一行 "highlight_ ...
- 【Ubuntu 16】 wifi连接 并解决无桌面图标问题
笔记本上装了win10和ubuntu16双系统,ubuntu16有半年多没使用了,今天一登录成功后,没有桌面啦,一个干净的壁纸映入眼帘,真操蛋. 上网搜索后总结:应该是应用软件中心出了问题,可是,没法 ...
- CNN详解
CNN详解 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7450413.html 前言 这篇博客主要就是卷积神经网络(CNN) ...
- Nodejs进阶:使用DiffieHellman密钥交换算法
## 简介 Diffie-Hellman(简称DH)是密钥交换算法之一,它的作用是保证通信双方在非安全的信道中安全地交换密钥.目前DH最重要的应用场景之一,就是在HTTPS的握手阶段,客户端.服务端利 ...
- 虚拟机下安装VMware Tools
使用虚拟机安装第二操作系统,是我们经常使用到的一种方法,但是为了能够在虚拟机与本地操作系统间进行文件共享,我们可以借助一款非常实用的工具VMware Tools.下面我们就来说一下怎样安装VMware ...
- 数据库索引B-树和B+树
一开始学习数据结构的时候,主要学习的是数组,队列,链表,队列,栈,树这些数据结构,其中树主要学习二叉树,平衡二叉树,二叉搜索树等这些子节点最多只有两个的树结构.但是,当我们接触数据库的时候,你会发现数 ...