201521123065《java程序设计》第14周学习总结
1. 本周学习总结
1、大部分情况下使用的数据库是关系型的数据库,使用表存储数据;
2、关系型数据库可以通过唯一的主键查找记录,也可以通过多个信息确定主键;
3、Mysql操作:显示-show databases(库);
show tables(表);
创建-create database **;
删除-drop **;
连接-use **;
查询-select ** from **;
删除表数据-delete from ** where **;
语句完后一定要加分号;
4、进行表操作之前一定要连接表(use **);
5、进行数据的插入:insert into ** (**,**,**) values (**,**,**);
不用中文进行插入,除整型数据不用引号包装外,其他均用单引号;
6、JDBC:JavaDataBaseConnection,建立java程序与数据库的连接,这是除用Mysql语句外的方式;
7、JDBC四大步骤:DriverManage->Connection->Statement->ResultSet
2. 书面作业
1. MySQL数据库基本操作
建立数据库,将自己的姓名、学号作为一条记录插入。(截图,需出现自己的学号、姓名)
在自己建立的数据库上执行常见SQL语句(截图)

-参考:实验任务书-题目1
2. 使用JDBC连接数据库与Statement
2.1 使用Statement操作数据库。(粘贴一段你认为比较有价值的代码,出现学号)



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


1、建立连接:Connection con=DriverManager.getConnection(url, userName, password);
2、执行语句:Statement statement = con.createStatement();
3、保存结果:ResultSet resultNum = statement.executeUpdate(strSql);
-参考:实验任务书-题目2
3. PreparedStatement与参数化查询
3.1 使用PreparedStatement根据用户指定的查询条件进行查询。(粘贴一段你认为比较有价值的代码,出现学号)
//201521123065
Scanner sc=new Scanner(System.in);
Connection conn = null;
ResultSet rs=null;
PreparedStatement st = null;
String name=sc.nextLine();
try {
System.out.println(getStudentByName(name,rs,st,conn).toString());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
public static Student getStudentByName(String name, ResultSet rs, PreparedStatement st, Connection conn) throws SQLException {
String sql = "select * from stuinfor where name = ?";
conn = JDBCUtil.getConnection();
st = conn.prepareStatement(sql);
st.setString(1, name);
rs = st.executeQuery(sql);
int id = rs.getInt("id");
String stuname = rs.getString("name");
String gender = rs.getString("gender");
Date birthday = rs.getDate("birthday");
String major = rs.getString("major");
int age = rs.getInt("age");
Student student = new Student(id, stuname, gender, birthday, major, age);
JDBCUtil.closeConnection(conn);
return student;
}
3.2 批量更新-批量插入1000个学生,统计整个操作所消耗的时间。对比普通方法插入与使用executeBatch方法所消耗的时间。(使用JUint4测试,需要出现时间对比截图)
BatchUpdate

普通方法

由上面比较可知
executeBatch的方法明显快于普通方法
参考:实验任务书-题目3
4. JDBCUtil与DAO
4.1 粘贴一段你认为比较有价值的代码,并说明为什么要摘取这段代码。出现学号
//201521123065
public boolean writeStudent(Student student) {
Connection conn = null;
PreparedStatement pstat = null;
String sql = "insert into student(name) values(?) ";//表中有id和name这列
int result = -1;
try {
conn = JDBCUtil.getConnection();
pstat = conn.prepareStatement(sql);
pstat.setString(1, student.getName());
result = pstat.executeUpdate();
}catch (SQLException sqle) {
sqle.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtil.realeaseAll(null,pstat, conn);
}
return result>0?true:false;
}
@Override
public Student readStudent(String name) {
Connection conn = null;
PreparedStatement pstat = null;
ResultSet rs = null;
String sql = "select * from student where name like ?";//表中有id和name这列
Student student = null;
try {
conn = JDBCUtil.getConnection();
pstat = conn.prepareStatement(sql);
pstat.setString(1, name);
rs = pstat.executeQuery();
while(rs.next()){
int stuId = rs.getInt("id");
String stuName = rs.getString("name");
student = new Student(stuId, stuName);
}
}catch (SQLException sqle) {
sqle.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtil.realeaseAll(rs,pstat, conn);
}
return student;
}
@Override
public void diplayAllStudent() {
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
String sql = "select * from student";//表中有id和name这列
try {
conn = JDBCUtil.getConnection();
stat = conn.createStatement();
rs = stat.executeQuery(sql);
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.format("该学生的id=%d,姓名=%s\n",id,name);
}
}catch (SQLException sqle) {
sqle.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtil.realeaseAll(rs,stat, conn);
}
}
这段代码可以向数据库写入学生信息,通过姓名查找该生的全部信息,
并且可以查询全部学生信息的功能
查询来的全部学生信息可以放入List,后返回;
4.2 使用DAO模式访问数据库有什么好处?
通过DAO模式,可以将数据库的入口与出口进行封装,实现统一性;
StudenDaoListImpl、StudentDaoArrayImpl、StudentDaoJDBCImpl都实现了StudentDao的接口,关系明确;
TestMain类作为主要的入口,主要是一些版面与格式的优化。
参考:实验任务书-题目5
5. 使用数据库改造购物车系统
5.1 使用数据库改造以前的购物车系统(应有图形界面)。如果以前为完成购物车系统,可编写基于数据库的学生管理系统。包括对学生的增删改查,要求使用。
public static Student getStudentByName(String name, ResultSet rs, PreparedStatement st, Connection conn) throws SQLException {//根据姓名查找学生信息
String sql = "select * from stuinfor where name = ?";
conn = JDBCUtil.getConnection();
st = conn.prepareStatement(sql);
st.setString(1, name);
rs = st.executeQuery(sql);
int id = rs.getInt("id");
String stuname = rs.getString("name");
String gender = rs.getString("gender");
Date birthday = rs.getDate("birthday");
int age = rs.getInt("age");
Student student = new Student(id, stuname, gender, birthday, age);
JDBCUtil.closeConnection(conn);
return student;
}
ublic static void displayAll() {//显示所有学生信息
// TODO Auto-generated method stub
try {
con = DriverManager.getConnection(url, userName, password);
statement = con.createStatement();
String strSql = "select * from stuinfor;";
rs = statement.executeQuery(strSql);
while (rs.next()) {
System.out.println("abc");
System.out.println(rs.getInt("id")+"\t");
System.out.print(rs.getString("name") + "\t");
System.out.print(rs.getString(3) + "\t");
System.out.print(rs.getDate("birthday") + "\t");
System.out.print(rs.getString(5) + "\t");
System.out.println(rs.getInt("age")+"\t\n");
}
} catch (SQLException sqlE) {
sqlE.printStackTrace();
} finally {
try {
if (con != null)
con.close();
con = null;
} catch (Exception ex) {
ex.printStackTrace();
}
con = null;
}
}
5.2 相比较使用文件,使用数据库存储与管理数据有何不一样?
数据库与文件一样是存储信息的容器
但相比之下,文件仅仅是用于存储,并不能很明显的体现文件之间的层次关系,
而庞大的数据库,不仅在存储的优化上或是在综合效率方面都优于文件的形式
比方说,记录号码的通讯本和手机上的通讯录,就能很好的体会其强势之处
3. 码云
3.1. 码云代码提交记录

201521123065《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程序设计>第九周学习总结 课堂内容总结 两个类有公用的东西放在父类里. 面向对象的三要素 封装 继承 多态:用父类声明引用,子类生成对象 ...
随机推荐
- CSS3基础(3)——CSS3 布局属性全接触
一. 弹性盒模型 1.弹性盒子模型介绍 弹性盒模型(Flexible Box或Flexbox)是一个CSS3新增布局模块,官方称为CSS Flexible Box Layout Module,用于实现 ...
- 重新认识alias:通过alias让rm更安全
rm的悲剧总是发生在不经意之间,所以无论是在shell脚本中还是交互式bash环境下,执行rm命令时总应该三思三思再三思.也因此,很多人想尽办法防止文件误删除,方法也各种各样. 1.1.1 alias ...
- 曲线点抽稀算法-Python实现
何为抽稀 在处理矢量化数据时,记录中往往会有很多重复数据,对进一步数据处理带来诸多不便.多余的数据一方面浪费了较多的存储空间,另一方面造成所要表达的图形不光滑或不符合标准.因此要通过某种规则,在保证矢 ...
- 关于socket通信bind()返回值错误:10049
这个问题,我差点和客户吵起来了.我的电脑确实没有问题,客户电脑却会经常出现,.今天查了下,居然是这种问题,大意了,在这里记录下. 服务器端程序开启的时候总是提示:bind错误,用WSAGetLastE ...
- C/C++ 知识点---设计模式
在软件工程中,设计模式用来描述在各种不同情况下,要怎么解决问题的一种方案.面向对象设计模式通常以类或对象来描述其中的关系和相互作用,是软件“设计”层次上的问题.使用设计模式可提高代码的重用性和可靠性, ...
- android之使用GridView+仿微信图片上传功能
由于工作要求最近在使用GridView完成图片的批量上传功能,我的例子当中包含仿微信图片上传.拍照.本地选择.相片裁剪等功能,如果有需要的朋友可以看一下,希望我的实际经验能对您有所帮助. 直接上图,下 ...
- ExpandableListView实现手风琴效果
1. 效果示例图 2. 创建方法 (1)第一种方法与ListView等普通控件一样,直接在布局文件中添加ExpandableListView控件即可. (2)第二种方法则是创建一个Activity继承 ...
- You don't know js
"Give me a chance to know you. " 更多内容: 移步这里 1. 作用域 1.1. 编译原理 尽管通常将 JavaScript 归类为"动态& ...
- 基于spring mvc的图片验证码实现
本文实现基于spring mvc的图片验证码,分后台代码和前端页面的展现以及验证码的验证. 首看后台实现代码: @RequestMapping({"authCode"}) publ ...
- Linux主分区,扩展分区,逻辑分区的联系和区别
主分区,也称为主磁盘分区,和扩展分区.逻辑分区一样,是一种分区类型.主分区中不能再划分其他类型的分区,因此每个主分区都相当于一个逻辑磁盘(在这一点上主分区和逻辑分区很相似,但主分区是直接在硬盘上划分的 ...