201521123073 《Java程序设计》第14周学习总结
14周-数据库
1. 本周学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容。

2. 书面作业
1. MySQL数据库基本操作
建立数据库,将自己的姓名、学号作为一条记录插入。(截图,需出现自己的学号、姓名)
在自己建立的数据库上执行常见SQL语句(截图)
-参考:实验任务书-题目1
创建一个表:

写入数据:

删除数据:

删除表:

2. 使用JDBC连接数据库与Statement
2.1 使用Statement操作数据库。(粘贴一段你认为比较有价值的代码,出现学号)
//201521123073
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false";
String userName = "root";
String password = "123456";
String driverName = "com.mysql.jdbc.Driver";
Class.forName(driverName);
con = DriverManager.getConnection(url, userName, password);
//201521123073插入学生信息:
String strSql = "insert into students(stuno,name,age,birthdate,major) values('2015050', '小红', 20,'1997-11-06','cs')";
stmt = con.createStatement();
resultNum = stmt.executeUpdate(strSql);
System.out.println(resultNum + "条记录已经插入");
//201521123073删除学生信息:
strSql = "delete from students where id='2'";// 删除id=2的数据
resultNum = stmt.executeUpdate(strSql);
System.out.println(resultNum + "条记录删除完毕");
//201521123073
更改学生信息:
strSql = "update students set major='中文' where id='1'";
resultNum = stmt.executeUpdate(strSql);
System.out.println(resultNum + "条记录更新完毕");
//201521123073
选择性的输出学生信息:
strSql = "select stuno,name,birthdate,major from students";
rs = stmt.executeQuery(strSql);
System.out.println("学号\t\t姓名\t出生日期\t\t专业");
while (rs.next()) {
System.out.print(rs.getString("stuno") + "\t\t");
System.out.print(rs.getString(2) + " \t");
System.out.print(rs.getDate("birthdate") + "\t");
System.out.print(rs.getString(4) + "\t\n");
}
2.2 使用JDBC操作数据库主要包含哪几个步骤?
答:
1.加载数据库驱动
2.建立连接
3.向数据库发送SQL语句
4.获得并处理结果集
5.关闭连接,释放资源
3. PreparedStatement与参数化查询
3.1 使用PreparedStatement根据用户指定的查询条件进行查询。(粘贴一段你认为比较有价值的代码,出现学号)
3.2 批量更新-批量插入1000个学生,统计整个操作所消耗的时间。(使用方法executeBatch)
参考:实验任务书-题目3
4. JDBCUtil与DAO
4.1 粘贴一段你认为比较有价值的代码,出现学号
4.2 使用DAO模式访问数据库有什么好处?
//201521123073
public class StudentDaoJDBCImpl implements StudentDao {
@Override
public int add(Student stu) {
// TODO Auto-generated method stub
Connection conn = null;
PreparedStatement pstat = null;
String sql = "insert into student(id,name) values(?,?) ";//表中有id和name这列
int result = -1;
try {
conn = JDBCUtil.getConnection();
pstat = conn.prepareStatement(sql);
pstat.setInt(1, stu.getId());
pstat.setString(2, stu.getName());
result = pstat.executeUpdate();
}catch (SQLException sqle) {
sqle.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtil.realeaseAll(null,pstat, conn);
}
return result;
}
@Override
public int delete(int sid) {
// TODO Auto-generated method stub
Connection conn = null;
PreparedStatement pstat = null;
String sql = "delete from student where id=?";//表中有id和name这列
int result = -1;
try {
conn = JDBCUtil.getConnection();
pstat = conn.prepareStatement(sql);
pstat.setInt(1, sid);
result = pstat.executeUpdate();
}catch (SQLException sqle) {
sqle.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtil.realeaseAll(null,pstat, conn);
}
return result;
}
@Override
public int update(Student stu) {
// TODO Auto-generated method stub
Connection conn = null;
PreparedStatement pstat = null;
String sql = "update student set age=? where id=?";//表中有id和name这列
int result = -1;
try {
conn = JDBCUtil.getConnection();
pstat = conn.prepareStatement(sql);
pstat.setString(1,stu.getName());
pstat.setInt(2, stu.getId());
result = pstat.executeUpdate();
}catch (SQLException sqle) {
sqle.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtil.realeaseAll(null,pstat, conn);
}
return result;
}
@Override
public List<Student> findAll() {
// TODO Auto-generated method stub
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
Student stu=null;
List<Student> students=new ArrayList<Student>();
String sql = "select * from student";//表中有id和name这列
try {
conn = JDBCUtil.getConnection();
stat = conn.createStatement();
rs = stat.executeQuery(sql);
while(rs.next()){
stu=new Student(rs.getInt("id"),rs.getString("name"));
students.add(stu);
}
}catch (SQLException sqle) {
sqle.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtil.realeaseAll(rs,stat, conn);
}
return students;
}
@Override
public Student findById(String sid) {
// TODO Auto-generated method stub
Connection conn = null;
PreparedStatement pstat = null;
ResultSet rs = null;
String sql = "select * from student where id=?";//表中有id和name这列
Student student = null;
try {
conn = JDBCUtil.getConnection();
pstat = conn.prepareStatement(sql);
pstat.setString(1, sid);
rs = pstat.executeQuery();
while(rs.next()){
student = new Student(rs.getInt("id"),rs.getString("name"));
}
}catch (SQLException sqle) {
sqle.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtil.realeaseAll(rs,pstat, conn);
}
return student;
}
@Override
public List<Student> findByName(String name) {
// TODO Auto-generated method stub
Student student = null;
Connection conn = null;
PreparedStatement pstat = null;
ResultSet rs = null;
Student stu=null;
List<Student> students=new ArrayList<Student>();
String sql = "select * from students where name like '?%'";//表中有id和name这列
try {
conn = JDBCUtil.getConnection();
pstat = conn.prepareStatement(sql);
pstat.setString(1, name);
rs = pstat.executeQuery();
while(rs.next()){
stu=new Student(rs.getInt("id"),rs.getString("name"));
students.add(stu);
}
}catch (SQLException sqle) {
sqle.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtil.realeaseAll(rs,pstat, conn);
}
return students;
}
}
(4.2)答:DAO模式相当于建立一个接口。
数据库的修改只要修改DAO层的访问方式就可以了,不用对整个项目都进行修改
5. 使用数据库改造购物车系统
5.1 使用数据库改造以前的购物车系统(应有图形界面)。如果以前为完成购物车系统,可编写基于数据库的学生管理系统。包括对学生的增删改查,要求使用。
5.2 相比较使用文件,使用数据库存储与管理数据有何不一样?
3. 码云
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

4.课外阅读
4.1 JDBC(TM) Database Access
4.2 代码结构中Dao,Service,Controller,Util,Model是什么意思,为什么划分
4.3 mysq数据库管理工具navicat基本使用方法
201521123073 《Java程序设计》第14周学习总结的更多相关文章
- 2018面向对象程序设计(Java)第14周学习指导及要求
2018面向对象程序设计(Java)第14周学习指导及要求(2018.11.29-2018.12.2) 学习目标 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及 ...
- 面向对象程序设计(JAVA) 第14周学习指导及要求
2019面向对象程序设计(Java)第14周学习指导及要求 (2019.11.29-2019.12.2) 学习目标 (1)掌握GUI布局管理器用法: (2)掌握Java Swing文本输入组件用途 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 201521123038 《Java程序设计》 第九周学习总结
201521123038 <Java程序设计> 第九周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...
- 20155303 2016-2017-2 《Java程序设计》第二周学习总结
20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...
- 20175221 2018-2019-2 《Java程序设计》第一周学习总结
20175221 2018-2019-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周通过观看书本配套视频,学到了如解释器,编译器等一些简单概念. 还懂得了java的一些简单 ...
- 20175314 《Java程序设计》第九周学习总结
20175314 <Java程序设计>第九周学习总结 教材学习内容总结 根据课本的介绍下载了MySQL和Navicat for MySQL并成功对后者进行破解 MySQL客户端管理工具(如 ...
- 20175314 《Java程序设计》第二周学习总结
20175314 <Java程序设计>第二周学习总结 教材学习内容总结 我在APPstore上发现了一个可以支持我们在IOS系统上学习实践Java程序的开发环境,只需要购买专业版就可以使用 ...
- 20155312 2016-2017-2 《Java程序设计》第九周学习总结
20155312 2016-2017-2 <Java程序设计>第九周学习总结 课堂内容总结 两个类有公用的东西放在父类里. 面向对象的三要素 封装 继承 多态:用父类声明引用,子类生成对象 ...
随机推荐
- android 学习Layout布局的使用
android 常用布局 LinearLayout(线性布局) 线性的 垂直的 水平的RelativeLaytout(相对布局) 最灵活的TableLayout(表格布局) 使用GridView代替A ...
- 1.SpringBoo之Helloword 快速搭建一个web项目
背景: Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配 ...
- 关于9080端口和80端口实现真正意义的WebServer+ApplicationServer结合应用
出自:http://www.javahao.com/79/posts/79129320.shtml 关于9080端口和80端口实现真正意义的WebServer+ApplicationServer结合应 ...
- SpringMVC注解@RequestMapping之produces属性导致的406错误
废话不多说,各位,直接看图说话,敢吗?这个问题网上解决的办法写的狠是粗糙,甚至说这次我干掉它完全是靠巧合,但是也不否认网上针对406错误给出的解决方式,可能是多种情况下出现的406吧?我这次的流程就是 ...
- 利用Arduino快速制作Teensy BadUSB, 攻击计算机
BadUsb介绍 BadUSB是计算机安全领域的热门话题之一,该漏洞由Karsten Nohl和Jakob Lell共同发现,并在2014年的BlackHat安全大会上公布. 虽然已隔一两年,但还是有 ...
- JSP向后台传递参数的四种方式
Jsp页面传值的方法 一.通过Form表单提交传值 客户端通过Form表单提交到服务器端,服务器端通过 Java代码 request.getParameter(String xx); 来取得参数(xx ...
- 借助VBScript让Windows系统发出声音
借助VBScript让Windows系统发出声音.. 文件I Love You.VBS中的内容是: CreateObject("SAPI.SpVoice").Speak" ...
- latex中pdflatex与xelatex的区别
1. PDFTeX程序:Tex语言的一个实现,也就是把Tex语言转换为排版的一个程序.它会把TeX 语言写的代码直接编译成 PDF文件. 2. PDFLaTeX命令:PDFTeX程序中的命令,用来编译 ...
- Flask01 初识flask、flask配置
1 什么是flask Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . 百度百科:点击前往 中文文档: ...
- python基础教程(三)
序列概览 Python 包含6 种内建的序列,这里重点讨论最常用的两种类型:列表和元组. 列表与元组的主要区别在于,列表可以修改,元组则不能.也就是说如果要根据要求来添加元素,那么列表可以会更好用:而 ...