MySql操作视频与数据库相关jar文件请参考QQ群文件。

本次作业参考文件

数据库PPT

0. 本周课程设计发布

Java课程设计

1. 本周学习总结

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

2. 书面作业

  • 1. MySQL数据库基本操作

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

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

    -参考:实验任务书-题目1

    建立数据库和表:

    插入信息:

    显示全部信息:

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

    连接test数据库:

            //201521123042
    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);

    插入学生信息:

    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 + "条记录已经插入");

删除学生信息:

	strSql = "delete from students where id='2'";// 删除id=2的数据
resultNum = stmt.executeUpdate(strSql);
System.out.println(resultNum + "条记录删除完毕");

更改学生信息:

	 strSql = "update students set major='中文' where id='1'";
resultNum = stmt.executeUpdate(strSql);
System.out.println(resultNum + "条记录更新完毕");

选择性的输出学生信息:

	 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.通过连接创建语句
>4.通过语句获得结果集
>5.处理结果集
>6.释放资源 **-参考:实验任务书-题目2**
  • 3. PreparedStatement与参数化查询
    3.1 使用PreparedStatement根据用户指定的查询条件进行查询。(粘贴一段你认为比较有价值的代码,出现学号)

    查询ID=16的学生信息

                    //201521123042
    strSql = "select * from students where Id = ?";
    pStatement = con.prepareStatement(strSql);
    pStatement.setInt(1, 16);
    rs = pStatement.executeQuery();

查询ID小于5的所有学生信息

		strSql = "select * from students where Id < ?";
pStatement = con.prepareStatement(strSql);
pStatement.setInt(1, 5);
rs = pStatement.executeQuery();

######3.2 批量更新-批量插入1000个学生,统计整个操作所消耗的时间。(使用方法executeBatch)
//201521123042
long start=System.currentTimeMillis();
for(int i=0;i<1000;i++){ pStatement.setInt(1, i);
pStatement.setString(2, "周迅");
pStatement.setInt(3, 18);
pStatement.setString(4, hmFromat.format(new Date()));
pStatement.setString(5, "电气工程");
pStatement.addBatch(); }
pStatement.executeBatch();
long finish=System.currentTimeMillis();
System.out.println("用时" +(finish-start));

**参考:实验任务书-题目3**
  • 4. JDBCUtil与DAO
    4.1 粘贴一段你认为比较有价值的代码,出现学号

    增加学生信息:

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

    删除学生信息:

    public  int delete(int sid) {
    Connection conn = null;
    PreparedStatement pst = null;
    int result=-1;
    String strSql = "delete from students where id = ?";
    try {
    conn = JDBCUtil.getConnection();
    pst = conn.prepareStatement(strSql);
    //连接数据库
    pst.setInt(1, sid);
    result = pst.executeUpdate();
    //显式释放资源
    pst.close();
    }catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
    JDBCUtil.realeaseAll(null, pst, conn);
    } return result>0?1:-1;
    }

    更新学生信息:

    public int update(Student stu) {
    Connection conn = null;
    PreparedStatement pst = null;
    String strSql = "update students set name = ? where Id = ?";
    int result=-1;
    try{
    conn = JDBCUtil.getConnection();
    pst = conn.prepareStatement(strSql);
    pst.setInt(2, stu.getId());
    pst.setString(1, stu.getName());
    result= pst.executeUpdate();
    }catch (SQLException sqle) {
    sqle.printStackTrace();
    }catch(Exception e){
    e.printStackTrace();
    }finally{
    JDBCUtil.realeaseAll(null,pst, conn);
    }
    return result>0?1:-1;
    }

    显示所有学生信息,以及按条件查询:

    public List<Student> findAll() {
    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(int id) {
    ResultSet rs = null;
    Connection conn = null;
    Student stu = new Student();
    PreparedStatement pst = null;
    String strSql = "select * from students where Id = ?";
    try{
    conn = JDBCUtil.getConnection();
    pst=conn.prepareStatement(strSql);
    pst.setInt(1, id);
    rs = pst.executeQuery();
    while(rs.next()){
    stu = new Student( rs.getInt("id"), rs.getString("name"));
    }
    }catch (SQLException sqle) {
    sqle.printStackTrace();
    }catch(Exception e){
    e.printStackTrace();
    }finally{
    JDBCUtil.realeaseAll(rs,pst, conn);
    }
    return stu;
    } public List<Student> findByName(String name){
    Connection conn = null;
    PreparedStatement pstat = null;
    ResultSet rs = null;
    String sql = "select * from student where name like ?";//表中有id和name这列
    Student student = null;
    List<Student> students=new ArrayList<Student>();
    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);
    students.add(student);
    }
    }catch (SQLException sqle) {
    sqle.printStackTrace();
    }catch(Exception e){
    e.printStackTrace();
    }finally{
    JDBCUtil.realeaseAll(rs,pstat, conn);
    }
    return students;
    }

    编写一个函数将List中的所有Student取出,放入Map中,其中key为学生的姓名,value为相应的学生对象。

    public Map<String,Student>showAllinMap(List<Student> students){
    Map<String,Student> map=new HashMap<String,Student>();
    for(Student e:students){
    System.out.println(e.toString());
    map.put(e.getName(), e);
    }
    return map;
    }
    4.2 使用DAO模式访问数据库有什么好处?

    DAO使程序层次分明,把对数据库的操作都放在这一层,这样其他层的逻辑控制就变得清晰明了了。

    对于实现业务逻辑而言,DAO层是基石。

    而且分层后DAO的代码维护与变更等也变得清晰可理解。

    参考:实验任务书-题目5

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

    先在数据库里存放几本书的信息:

    查询所需书籍:

    	 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    Connection conn = null;
    Statement stat = null;
    ResultSet rs = null;
    PreparedStatement pstat = null;
    String sql = "select * from student where name like ?";//表中有id和name这列
    try {
    conn = JDBCUtil.getConnection();
    pstat = conn.prepareStatement(sql);
    pstat.setString(1, name);
    rs = pstat.executeQuery();
    while(rs.next()){
    jLabel6.setText(""+rs.getString("name"));
    jLabel7.setText(""+rs.getDouble("price"));
    jLabel8.setText(""+rs.getInt("num"));
    }
    }catch (SQLException sqle) {
    sqle.printStackTrace();
    }catch(Exception e){
    e.printStackTrace();
    }finally{
    JDBCUtil.realeaseAll(rs,pstat, conn);
    }
    }

加入购物车:

	//201521123042
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { Connection conn = null;
PreparedStatement pstat = null;
int result;
String sql = "insert into ShoppingCart(name,price,num) values(?,?,?) ";//表中有id和name这列 try {
conn = JDBCUtil.getConnection();
pstat = conn.prepareStatement(sql);
pstat.setString(1, jLabel6.getText());
pstat.setDouble(1, Double.parseDouble(jLabel7.getText()));
pstat.setInt(1, Integer.parseInt(jLabel8.getText()));
result = pstat.executeUpdate(); }catch (SQLException sqle) {
sqle.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtil.realeaseAll(null,pstat, conn);
}
![](http://images2015.cnblogs.com/blog/1109769/201705/1109769-20170528175627688-88088867.png) ######5.2 相比较使用文件,使用数据库存储与管理数据有何不一样?
>①数据库效率高。利用数据库存储访问修改数据比较方便.所有关系型数据库都可以用sql(结构化查询语言)操作数据库;数据库在数据写入读取上做了优化,文本的没有,数据少时执行速度可能看不出区别,但是一旦数据成千上万,那么效率就很明显了。
>②在非数据库系统中,每个应用程序都有自己的专用文件,浪费存储空间。利用数据库可以解决这个问题.

3. 码云

3.1. 码云代码提交记录

在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

4.课外阅读

4.1 JDBC(TM) Database Access
4.2 代码结构中Dao,Service,Controller,Util,Model是什么意思,为什么划分
4.3 mysq数据库管理工具navicat基本使用方法

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

  1. 2018面向对象程序设计(Java)第14周学习指导及要求

    2018面向对象程序设计(Java)第14周学习指导及要求(2018.11.29-2018.12.2)   学习目标 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及 ...

  2. 面向对象程序设计(JAVA) 第14周学习指导及要求

    2019面向对象程序设计(Java)第14周学习指导及要求 (2019.11.29-2019.12.2)   学习目标 (1)掌握GUI布局管理器用法: (2)掌握Java Swing文本输入组件用途 ...

  3. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 201521123038 《Java程序设计》 第九周学习总结

    201521123038 <Java程序设计> 第九周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...

  6. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

  7. 20175221 2018-2019-2 《Java程序设计》第一周学习总结

    20175221 2018-2019-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周通过观看书本配套视频,学到了如解释器,编译器等一些简单概念. 还懂得了java的一些简单 ...

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

    20175314 <Java程序设计>第九周学习总结 教材学习内容总结 根据课本的介绍下载了MySQL和Navicat for MySQL并成功对后者进行破解 MySQL客户端管理工具(如 ...

  9. 20175314 《Java程序设计》第二周学习总结

    20175314 <Java程序设计>第二周学习总结 教材学习内容总结 我在APPstore上发现了一个可以支持我们在IOS系统上学习实践Java程序的开发环境,只需要购买专业版就可以使用 ...

  10. 20155312 2016-2017-2 《Java程序设计》第九周学习总结

    20155312 2016-2017-2 <Java程序设计>第九周学习总结 课堂内容总结 两个类有公用的东西放在父类里. 面向对象的三要素 封装 继承 多态:用父类声明引用,子类生成对象 ...

随机推荐

  1. JS进阶 ] 分析JS中的异步操作

    写在前面 JS因为是单线程的,所以在执行事务的时候,往往会因为某个事务的延迟,而导致服务器假死,这时候异步编程就显的格外重要,但是异步编程一般理解为回调函数callback,典型的就是node,回调函 ...

  2. 为什么重写 equals 方法 必须重写 hashCode

    自己学到这,就记录了下来,代码都是自己敲得,有不对的地方希望大神指点出来 为什么重写 equals 方法 必须重写 hashCode 如果你重写了equals,比如说是基于对象的内容实现的,而不重写 ...

  3. MYSQL事务及存储引擎对比

    Innodb支持事务,而myisam不支持事务. 事务的定义: 当多个用户访问同一份数据时,一个用户在更改数据的过程中可能有其他用户同时发起更改请求,为保证数据的更新从一个一致性状态变更为另一个一致性 ...

  4. Linux下进程描述(1)—进程控制块

    进程概念介绍 进程是操作系统对运行程序的一种抽象. • 一个正在执行的程序: • 一个正在计算机上执行的程序实例: • 能分配给处理器并由处理器执行的实体: • 一个具有普以下特征的活动单元:一组指令 ...

  5. js 小数计算为啥和想象中不一样!

    今天遇到了一个比较有趣的事,如果要你计算0.1+0.2等于多少你会怎么回答? "0.3啊!"你可能都不会考虑.我也一样,当a=0.1,b=0.2时 if(a+b === 0.3){ ...

  6. TP-Link路由器的设置向导

    TP-Link路由器的设置向导.. 一.准备工作: 1.首先是路由器的安装,主要是将路由器电源接上,并通电,然后就是网线的连接.如果是拨号上网用户,请将猫引出的网线插入到TP-Link路由器最特别的一 ...

  7. BotVS趋势交易策略-MA均线

    1. 均线策略1号 思路:使用MA小时线,入市线金叉买入,出市线死叉时卖出.代码如下 import types def main(): STATE_IDLE = -1 state = STATE_ID ...

  8. MySQL(三)之SQL语句分类、基本操作、三大范式

    一.SQL语句的分类     DML(Data Manipulation Langauge,数据操纵/管理语言) (insert,delete,update,select)     DDL(Data ...

  9. 用python实现简单的数字信号软件滤波处理

    做嵌入式开发,经常需要通过逻辑分析仪对数字信号进行数据分析.如果信号源附近有强干扰源,并且逻辑分析仪滤波效果不好的话,获取到的数字信号,经常带有一些"毛刺",这些"毛刺& ...

  10. 向GitHub 提交你的源代码

    之前的这篇文章「Git入门篇」相信大家都已经对 Git 的基本操作熟悉了,但是这篇文章只介绍了对本地 Git 仓库的基本操作,今天我就来介绍下如何跟远程仓库一起协作,教你们向 GitHub 上提交你们 ...