20175214 《Java程序设计》第9周学习总结

20175214 《Java程序设计》第9周学习总结


本周学习任务总结

一、根据《java2实用教程》和蓝墨云学习视频学习第十一章;java

二、尝试将课本重点内容用本身的话复述手打;mysql

三、输入课本代码并上传码云;git

四、使用IDEA调试代码;sql

五、学习使用MySQL。数据库


教材学习重点内容总结

  • 11.1 MySQL数据库管理系统
    • 百度MySQL,进入官网,选择社区版并下载,具体选项如图;

      apache

    • 解压过程略数组

  • 11.2 启动MySQL数据库服务器
    • 具体过程略,激活命令以下:
      • 命令:mysqld --initialize-insecure
        • 做用:初始化data目录;
      • 命令:mysqladmin -u root -p password
        • 做用:修改root密码。
  • 11.3 MySQL客户端管理工具
    • 百度Navicat,进入官网选择适合的下载便可,我下载的是Navicat Premiun
    • 具体链接过程如图,若出现链接失败请参考navicat链接mysql报错1251解决方案

    • 建表如图:
  • 11.4 JDBC服务器

    • 程序常常使用JDBC进行以下的操做 :
      • (1)与一个数据库创建链接。
      • (2)向数据库发送SQL语句。
      • (3)处理数据库返回的结果。
  • 11.5 链接数据库工具

    • 1.下载JDBC-MySQL数据库驱动
    • 2.加载JDBC-MySQL数据库驱动
    应用程序负责加载JDBC-MySQL数据库驱动的代码以下:
    try{  Class.forName("com.mysql.jdbc.Driver");
    }
    catch(Exception e){}
    • 3.链接数据库
      • java.sql包中的DriverManager类有两个用于创建链接的类方法(static方法)
      Connection getConnection(java.lang.String, java.lang.String, java.lang.String)
      Connection getConnection(java.lang.String)
      • 这两个方法均可能抛出SQLException异常,DriverManager类调用上述方法能够和数据库创建链接,便可返回一个Connection对象。sqlserver

      • 使用Connection getConnection(java.lang.String) 方法创建链接的代码以下:

      Connection con;
      String uri =
      "jdbc:mysql://192.168.100.1:3306/students?user=root&password=&useSSL=true";
      try{
         con = DriverManager.getConnection(uri); //链接代码
       }
      catch(SQLException e){
          System.out.println(e);
      }
      • 若是root用户密码是xx,将&password=更改成&password=xx便可

      • 使用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.注意汉字问题
      • 须要特别注意的是,若是数据库的表中的记录有汉字,那么在创建链接时须要额外多传递一个参数characterEncoding,并取值gb2312utf-8
      String uri = "jdbc:mysql://localhost/students?useSSL=true&characterEncoding=utf-8";
       con = DriverManager.getConnection(uri, "root","");  //链接代码
  • 11.6 查询操做

    • 1.向数据库发送SQL查询语句
      • 首先使用Statement声明一个SQL语句对象,而后让已建立的链接对象con调用方法createStatement()建立这个SQL语句对象,代码以下:
      try{Statement sql = con.createStatement();
      }
      catch(SQLException e){}
    • 2.处理查询结果
      • 有了SQL语句对象后,这个对象就能够调用相应的方法实现对数据库中表的查询和修改,并将查询结果存放在一个ResultSet类声明的对象中。也就是说SQL查询语句对数据库的查询操做将返回一个ResultSet对象,ResultSet对象是按“列”(字段)组织的数据行构成。
      ResultSet rs = sql.executeQuery("SELECT * FROM students");
      • 结果集rs的列数是4列,恰好和students的列数相同
      • 而对于:ResultSet rs = sql.executeQuery("SELECT name,height FROM students");
      • ResultSet对象一次只能看到一个数据行,使用next()方法移到下一个数据行,得到一行数据后,ResultSet对象能够使用getXxx方法得到字段值(列值),将位置索引(第一列使用1,第二列使用2等)或列名传递给getXxx方法的参数便可。
      • 不管字段是何种属性,总能够使用getString(int columnIndex)或getString(String columnName)方法返回字段值的串表示
    • 3.关闭链接
      • ResultSet对象和数据库链接对象(Connection对象)实现了紧密的绑定,一旦链接对象被关闭,ResultSet对象中的数据马上消失。这就意味着,应用程序在使用ResultSet对象中的数据时,就必须始终保持和数据库的链接,直到应用程序将ResultSet对象中的数据查看完毕
      • 若是在代码
      ResultSet rs = sql.executeQuery("SELECT * FROM students");
      以后马上关闭链接:con.close();,程序将没法获取rs中的数据。
  • 11.6.1 顺序查询

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

    • 为了获得一个可滚动的结果集,需使用下述方法得到一个Statement对象。
    Statement stmt = con.createStatement(int type ,int concurrency);
  • 11.6.3 条件与排序查询

    • where子语句
    通常格式:
    select 字段 from 表名 where 条件
    • (1)字段值和固定值比较,例如:
    select name,height from mess where name='李四'
    • (2)字段值在某个区间范围,例如:
    select * from mess where height>1.60 and height<=1.8
    • 排序,用order by子语句对记录排序
    select * from mess where name like '%林%' order by name
  • 11.7 更新、添加与删除操做

    • 1.更新
      update 表 set 字段 = 新值 where <条件子句>
    • 2.添加
      insert into 表(字段列表) values (对应的具体的记录)

      insert into 表 values (对应的具体的记录)
    • 3.删除
      delete from 表名 where <条件子句>
  • 11.8 使用预处理语句

  • 11.8.1 预处理语句的优势

    • 对于JDBC,若是使用Connection和某个数据库创建了链接对象con,那么con就能够调用prepareStatement(String sql)方法对参数sql指定的SQL语句进行预编译处理,生成该数据库底层的内部命令,并将该命令封装在PreparedStatement对象中,那么该对象调用下列方法均可以使得该底层内部命令被数据库执行:
    ResultSet executeQuery()
    boolean execute()
    int executeUpdate()
  • 11.8.2 使用通配符

    • 在对SQL进行预处理时能够使用通配符?(英文问号)来代替字段的值,只要在预处理语句执行以前再设置通配符所表明的具体值便可。例如:
    String str = "select * from mess where height < ? and name= ? "
    PreparedStatement sql = con.prepareStatement(str);

    在sql对象执行以前,必须调用相应的方法设置通配符?表明的具体值,如:

    sql.setFloat(1,1.76f);
    sql.setString(2, "武泽");
    • 预处理SQL语句sql中第1个通配符?表明的值是1.76,第2个通配符?表明的值是'武泽'。通配符按着它们在预处理SQL语句中从左到右依次出现的顺序分别被称为第1个、第2个、……、第m个通配符。
    • 预处理语句设置通配符?的值的经常使用方法有:
    void setDate(int parameterIndex, Date x)
    void setDouble(int parameterIndex, double x)
    void setFloat(int parameterIndex, float x)
    void setInt(int parameterIndex, int x)
    void setLong(int parameterIndex, long x)
    void setString(int parameterIndex, String x)
  • 11.9 通用查询

    • 本节的目的是编写一个类,只要用户将数据库名、SQL语句传递给该类对象,那么该对象就用一个二维数组返回查询的记录。
    • 程序中的结果集ResultSet对象rs调用getMetaData()方法返回一个ResultSetMetaData对象(结果集的元数据对象):
      ResultSetMetaData metaData = rs.getMetaData();
      metaData,调用getColumnCount()方法就能够返回结果集rs中的列的数目:
      int columnCount = metaData.getColumnCount();
      metaData调用getColumnName(int i)方法就能够返回结果集rs中的第i列的名字:
      String columnName = metaData.getColumnName(i);
  • 11.10 事务

  • 11.10.1 事务及处理

    • 事务由一组SQL语句组成,所谓事务处理是指:应用程序保证事务中的SQL语句要么所有都执行,要么一个都不执行。
  • 11.10.2 JDBC事务处理步骤

    • 1.用setAutoCommit(boolean b)方法关闭自动提交模式
    • 2.用commit()方法处理事务
    • 3.用rollback()方法处理事务失败
  • 11.11链接SQL Server数据库

    • 加载SQL Server驱动程序代码以下:
    try {  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    }
    catch(Exception e){
    }
    • 链接的代码以下:
    try{
        String uri= "jdbc:sqlserver://192.168.100.1:1433;DatabaseName=warehouse";
        String user="sa";
        String password="dog123456";
        con=DriverManager.getConnection(uri,user,password);
     }
    catch(SQLException e){
        System.out.println(e);
    }
  • 11.12链接Derby数据库

    • 加载Derby数据库驱动程序的代码是:Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
    • 链接(create取值是true)的代码是:
    Connection con =
    DriverManager.getConnection("jdbc:derby:students;create=true");

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


代码托管

相关文章
相关标签/搜索