201521123002《Java程序设计》第14周学习总结
1. 本周学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容。
MySql数据库简单操作:
库操作:
显示所有数据库: show databases;
创建数据库: create database test;
删除数据库: drop database test;
连接数据库: use test;
查看当前连接的数据库: select database();
当前数据库包含的表: show tables;
删除表 drop table students;
插入数据 insert into students...
JDBC编程一般步骤
1.与数据库建立连接(Connection)
2.向数据库发送SQL语句(statement)
3.获得和处理查询或更新语句返回的结果
4.关闭连接,释放资源
使用PreparedStatement操作数据库
使用addBatch()来收集SQL
使用executeBatch()批量执行
2. 书面作业
1.MySQL数据库基本操作
建立数据库,将自己的姓名、学号作为一条记录插入。(截图,需出现自己的学号、姓名)
在自己建立的数据库上执行常见SQL语句(截图)
- 参考:实验任务书-题目1
2.使用JDBC连接数据库与Statement
2.1 使用Statement操作数据库。(粘贴一段你认为比较有价值的代码,出现学号)
大同小异,最关键的还是这个套路
2.2 使用JDBC操作数据库主要包含哪几个步骤?
1.注册驱动
2.创建连接
3.通过连接创建语句
4.通过语句获得结果集
5.处理结果集
6.释放资源
- 参考:实验任务书-题目2
3.PreparedStatement与参数化查询
3.1 使用PreparedStatement根据用户指定的查询条件进行查询。(粘贴一段你认为比较有价值的代码,出现学号)
3.2 批量更新-批量插入1000个学生,统计整个操作所消耗的时间。(使用方法executeBatch
)
long st1=System.currentTimeMillis();
for(int i;i<1000;i++){
String s1="insert into students(stuno,name,age) values(?,?,?)";
ps=con.prepareStatement(s1);
ps.setString(1,"2015002");
ps.setString(2,"linlin");
ps.setString(3,20);
ps.executeUpdate();
}
long et1=System.currentTimeMillis();
System.out.println("普通方式的时间:"+(et1-st1)+"ms");
long st2=System.currentTimeMillis();
for(int i;i<1000;i++){
String s1="insert into students(stuno,name,age) values(?,?,?)";
ps=con.prepareStatement(s1);
ps.setString(1,"2015002");
ps.setString(2,"linlin");
ps.setString(3,20);
ps.addBatch();
ps.executeUpdate();
}
ps.executeBatch();
long et2=System.currentTimeMillis();
System.out.println("批量方式的时间:"+(et1-st1)+"ms");
- 参考:实验任务书-题目3
4.JDBCUtil与DAO
4.1 粘贴一段你认为比较有价值的代码,出现学号
public int add(Student stu) {
// TODO Auto-generated method stub
Connection conn = null;
PreparedStatement pstat = null;
String sql = "insert into student(id,name) values(?,?) ";
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;
}
public int delete(int sid) {
// TODO Auto-generated method stub
Connection conn = null;
PreparedStatement pstat = null;
String sql = "delete from student where id=?";
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;
}
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;
}
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;
}
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=?";
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;
}
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 '?%'";
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模式访问数据库有什么好处?
省去了很多重复的代码
- 参考:实验任务书-题目5
5.使用数据库改造购物车系统
5.1 使用数据库改造以前的购物车系统(应有图形界面)。如果以前为完成购物车系统,可编写基于数据库的学生管理系统。包括对学生的增删改查,要求使用。
private void aboutButtonActionPerformed(java.awt.event.ActionEvent evt) {
aboutDialog.setVisible(true);
aboutDialog.pack();
}
private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {
String name = namejTextField1.getText();
String price = pricejTextField2.getText();
Double price1 = Double.parseDouble(price);
String num = numjTextField3.getText();
int num1 = Integer.parseInt(num);
Connection con = null;
PreparedStatement pstat = null;
String sql = "insert into cart(name,price,num) values(?,?,?) ";
int result = -1;
try {
con = JDBCUtil.getConnection();
pstat = con.prepareStatement(sql);
pstat.setString(1, name);
pstat.setDouble(2, price1);
pstat.setInt(3, num1);
result = pstat.executeUpdate();
if (result == 1) {
JOptionPane.showMessageDialog(null, "添加成功");
} else {
JOptionPane.showMessageDialog(null, "添加失败!");
}
} catch (SQLException sqle) {
sqle.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtil.realeaseAll(null, pstat, con);
}
}
5.2 相比较使用文件,使用数据库存储与管理数据有何不一样?
- 可以存储大量的数据;
- 操作方便快速
4.课外阅读
4.1 JDBC(TM) Database Access
4.2 代码结构中Dao,Service,Controller,Util,Model是什么意思,为什么划分
4.3 mysq数据库管理工具navicat基本使用方法
201521123002《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程序设计>第九周学习总结 课堂内容总结 两个类有公用的东西放在父类里. 面向对象的三要素 封装 继承 多态:用父类声明引用,子类生成对象 ...
随机推荐
- 【Spring】的【bean】管理(XML配置文件)
Bean实例化的三种方式 说明:通过配置文件创建对象就称为Bean实例化. 第一种:使用类的无参构造创建(重点) 实体类 package com.tyzr.ioc; public class User ...
- 17个新手常见Python运行时错误
当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂.这里列出了常见的的一些让你程序 crash 的运行时错误. 1)忘记在 if , elif , else , for , ...
- Orcle导入导出dmp文件
--Orcle导入导出dmp文件 --------------------------2013/12/06 导出表: exp scott/tiger@mycon tables=(dept,emp) ...
- [Leetcode]50. Pow(x, n)
Implement pow(x, n). 我的做法就比较傻了.排除了所有的特殊情况(而且double一般不可以直接判断==),然后常规情况用循环来做.- -||| 直接用循环,时间复杂度就比较大.应该 ...
- 音频软件开发中的debug方法和工具
本文系作者原创.如转载,请注明出处. 谢谢! 音频软件开发同其他软件开发一样,都需要去调试.音频软件调试同其他软件调试方法有相同的地方,也有不同的地方,同时调试时还需要借助一些专门的工具,有了这些方法 ...
- .NET Core迁移技巧之web.config配置文件
大家都知道.NET Core现在不再支持原来的web.config配置文件了,取而代之的是json或xml配置文件.官方推荐的项目配置方式是使用appsettings.json配置文件,这对现有一些重 ...
- Maven学习 使用Nexus搭建Maven私服(转)
为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到 ...
- TensorFlow框架之Computational Graph详解
1. Getting Start 1.1 import TensorFlow应用程序需要引入编程架包,才能访问TensorFlow的类.方法和符号.如下所示的方法: import tensorflow ...
- IT类非开发面试总结--1
面试总结.. ================================= 第一部分.. -------------2. 电脑开机时风扇转, 但是屏幕没有任何显示, 此现象可能是哪些方面所导致? ...
- struts2--Action
HTTP请求 提交 Struts2 StrutsPrepareAndExecuteFilter 核心控制器 -- 请求分发给不同Action Action书写的的三种格式 第一种 Action可以是 ...