zoukankan      html  css  js  c++  java
  • 20165203《Java程序设计》第七周Java学习总结

    20165203《Java程序设计》第七周Java学习总结

    教材学习内容总结

    第11章 JDBC与MySQL数据库

    • MySQL数据库管理系统
      MySQL数据库管理系统,简称MySQL,是世界上最流行的开源数据库管理系统,其社区版(MySQL Community Edition)是最流行的免费下载的开源数据库管理系统。
      下载安装后,进行启动MySQL数据库服务器,并建立连接,建立数据库,创建表等操作。

    • 连接MySQL数据库
      1.下载JDBC-MySQL数据库驱动
      2.加载JDBC-MySQL数据库驱动
      代码如下:

      try{ 
      Class.forName("com.mysql.jdbc.Driver");
      }
      catch(Exception e){}  
      

      3.连接数据库

      使用Connection getConnection(java.lang.String) 方法建立连接的代码如下:

      Connection con;
      String uri = 
      "jdbc:mysql://192.168.100.1:3306/students?user=r oot&password=&useSSL=true";
      try{
         con = DriverManager.getConnection(uri); //连接代码
       }
      catch(SQLException e){
          System.out.println(e);
      }  
      

      使用
      Connection getConnection(java.lang.String, java.lang.String, java.lang.String)
      方法建立连接的代码如下:

    Connection con;
    String uri = "jdbc:mysql:// 192.168.100.1:3306/students? useSSL=true";
    String user ="root";
    String password ="";
    try{  
          con = DriverManager.getConnection(uri,user,password); //连接代码
       }
    catch(SQLException e){
          System.out.println(e);
    }
    

    4.注意汉字问题

    • 查询操作
      具体步骤:
      1.得到SQL查询语句对象
    try{  Statement sql=con.createStatement();
    }
    catch(SQLException e ){}
    

    2.处理查询结果
    注意:
    无论字段是何种属性,总可以使用
    getString(int columnIndex)或
    getString(String columnName)
    方法返回字段值的串表示

    3.关闭连接

    顺序查询:
    指ResultSet对象一次只能看到一个数据行,使用next()方法移到下一个数据行,next()方法最初的查询位置,即游标位置,位于第一行的前面。next()方法向下(向后、数据行号大的方向)移动游标,移动成功返回true,否则返回false。

    控制游标:
    为了得到一个可滚动的结果集,需使用下述方法获得一个Statement对象。

    Statement stmt = con.createStatement(int type ,int concurrency);
    

    条件与排序查询:

    1. where子语句
      一般格式:
      select 字段 from 表名 where 条件
      2.排序
      用order by子语句对记录排序
    • 更新、添加与删除操作
      1.更新
      update 表 set 字段 = 新值 where <条件子句>
      2.添加
      insert into 表(字段列表) values (对应的具体的记录)

      insert into 表 values (对应的具体的记录)
      3.删除
      delete from 表名 where <条件子句>

    • 使用预处理语句

    Connection和某个数据库建立了连接对象con,那么con就可以调用prepareStatement(String sql)方法对参数sql指定的SQL语句进行预编译处理,生成该数据库底层的内部命令,并将该命令封装在PreparedStatement对象中,那么该对象调用下列方法都可以使得该底层内部命令被数据库执行。
    
    • 事务
      JDBC事务处理步骤
      1.用setAutoCommit(booean b)方法关闭自动提交模式
      2.用commit()方法处理事务
      3.用rollback()方法处理事务失败

    教材学习中的问题和解决过程

    Q1:想总结一下hibernatejdbc连接数据库的优劣比较

    A1: 主要从内存消耗,运行效率,开发效率三个方面来分析,参考jdbc与hibernate的优缺点比较

    代码调试中的问题和解决过程

    Q:在运行Example11_1时,出现了如图所示情况。

    A:在学习伙伴的帮助下,在命令行终端输入sudo apt-get install mysql-server mysql-client命令,安装MySQL,之后问题解决。

    代码托管

    上周考试错题总结

    Q1:下列关于异常的说法,错误的是

    A.Java使用throws抛出一个异常,使用throw声明方法可能抛出异常。
    B.执行System.out.println(3/0);语句会报ArithmeticException异常。
    C.Java中的错误是以对象的方式呈现为java.lang.Throwable的各种子类实例。
    D.方法parseInt()在执行过程中可能抛出DataFormatException异常。
    正解:AD
    知识点:

    • Java使用throw抛出一个异常,使用throws声明方法可能抛出异常。
      -方法parseInt()在执行过程中可能抛出NumberFormatException异常。

    Q2: 如果超出JVM运行能力之外,如“byte[] arr=new
    byte[1024 * 1024 *600];”会抛出java.lang.OutOfMemory
    Error异常。
    A.true
    B.false
    正解:B
    知识点: 对于严重的错误,通过Error类来描述,而对于非严重的问题,则是通过Exception类来进行描述的。
    Q3:InputStream类继承自FileInputStream,可以以字节为单位读取文件。

    A.true
    B.false
    正解:B
    知识点:InputStream类是父类,FileInputStream是子类

    Q4:下列关于TreeSet泛型类常用方法的介绍,正确的是
    A.public boolean contains(Object o) 如果此 set 包含指定的元素,则返回 true。如果指定对象无法与该 set 中的当前元素进行比较,或不包含,则返回false。
    B.public boolean add(E e)将指定的元素添加到此 set。如果此 set已经包含这样的元素,则该调用不改变此 set 并返回 false。

    C.public boolean addAll(Collection<? extends E> c)将指定 collection 中的所有元素添加到此 set 中。如果此 set 由于调用而发生更改,则返回 true。

    D.public E lower(E e) 返回此 set 中严格小于给定元素的最大元素;如果不存在这样的元素,则返回 null。
    正解:BCD
    知识点:如果指定对象无法与该 set 中的当前元素进行比较,则抛出ClassCastException异常。
    Q5:下列说法正确的是

    A.hasMoreTokens()方法返回语言符号的计数个数。
    B.StringTokenizer 方法不区分标识符、数和带引号的字符串,它们也不识别并跳过注释。
    C.字符串分析器的计数变量的初始值等于字符串中的单词数目。
    D.与split()方法不同的是,StringTokenizer对象不使用正则表达式作为分割标记。
    正解:BCD
    知识点:计数变量的值大于0,该方法返回true。否则返回false。

    其他(感悟、思考等,可选)

    本周主要学习了数据库,在安装MySQL时出现了一些小波折,不过经过自己查找问题的原因以及小伙伴的帮助下,问题都迎刃而解了,再次感谢我的学习伙伴们。

    学习进度条

    ~ 代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 48/48 1/1 20/20
    第二周 390/438 2/3 18/38
    第三周 886/1304 1/4 18/56
    第四周 1105/2409 1/5 30/86
    第五周 1229/3196 1/6 20/106
    第六周 1147/4343 2/8 25/131
    第七周 1862/3668 1/9 20/151
  • 相关阅读:
    .net软件反编译笔记
    Asp.Net 网站一键部署技术(上)
    C# TreeGridView 实现进程列表
    HeidiSQL Navicat
    Flask项目中邮箱模块的应用
    如何在已有的Flask项目添加数据表结构?
    把u盘刻录成系统盘
    Object '<Tbl_next_week_change_state at 0x7f2c78d849e8>' is already attached to session '4' (this is '6')
    OSError: [Errno 98] Address already in use
    Linux下设置和查看环境变量
  • 原文地址:https://www.cnblogs.com/20165203-xyx/p/8835500.html
Copyright © 2011-2022 走看看