Java-MySQL JDBC(4)

JDBC-课堂笔记

一、DCL(了解)

-- 1. 创建一个帐号:lisi
CREATE USER 'lisi'@'%' IDENTIFIED BY 'lisi';
-- 2. 给用户授权:所有权限、heima63所有表
GRANT ALL ON heima63.* TO 'lisi'@'%';
-- 3. 给用户撤消授权:插入、修改、删除的权限
REVOKE INSERT, UPDATE, DELETE ON heima63.* FROM 'lisi'@'%';
-- 4. 查看授权
SHOW GRANTS FOR 'lisi'@'%';
-- 5. 删除用户
DROP USER 'lisi'@'%';

-- 6. 修改密码
-- 6.1 修改其它用户的密码
SET PASSWORD FOR 'lisi'@'%' = PASSWORD('1234');
-- 6.2 修改root自己的密码
SET PASSWORD = PASSWORD('1234');

二、JDBC

  1. JDBC简介
  • 什么是JDBC:Sun公司提供的一套规范(接口),由一堆接口和工具类组成的,可以让Java用来调用操作数据库
  • JDBC的作用:实现了Java程序对不同数据库的统一操作
  • 数据库驱动:由数据库厂商提供的,是JDBC规范的实现类,打包形成的jar包,叫数据库驱动包
    • 要操作什么数据库,就必须有什么数据库的驱动包
  1. JDBC快速入门

    //1.注册驱动
    //2.获取连接
    //3.创建SQL执行平台
    //4.执行SQL语句
    //5.处理结果
    //6.释放资源

3. JDBC的API详解

3.1 注册驱动

  • JDBC的驱动接口:java.sql.Driver

  • MySql的驱动类:com.mysql.jdbc.Driver

  • 如何注册驱动:

    //方式一:不推荐
    DriverManager.registerDriver(new com.mysql.jdbc.Driver());

      //方式二:推荐
     Class.forName("com.mysql.jdbc.Driver");
    
  • 方式一不推荐的原因:

    • 注册了2次
    • 有硬编码问题:源码里写死了注册的是MySql的驱动;如果将来换成了Oracle,就必须要修改源码

3.2 获取连接

  • 连接对象:java.sql.Connection

  • 如何获取:

    Connection connection = DriverManager.getConnection(url,username,password);

  • 参数:

    • url:数据库的连接地址,由三部分组成,使用英文冒号连接
      • 协议名:固定值jdbc
      • 子协议:通常是数据库的类型,比如:mysql
      • 具体地址:由数据库自行决定的格式,MySql的写法://ip:port/database
        • 如果连接的是本机、默认端口的MySql,可以简写成:///database
    • username:数据库的登录名
    • password:数据库的密码

3.3 创建SQL执行平台

  • SQL执行平台:java.sql.Statement

  • 获取方式:

    Statement statement = connection.createStatement();

3.4 执行SQL语句

  • 执行DQL语句:statement.executeQuery(sql),返回值:ResultSet,是查询的结果集对象
  • 执行DML语句:statement.executeUpdate(sql),返回值:int,表示影响的行数
  • 执行任意语句:statement.execute(sql),返回值:boolean;
    • 如果执行的是查询/有ResultSet对象,返回true

    • 如果执行的不是查询/没有ResultSet对象,返回false

      //执行查询
      
      
        ResultSet resultSet = statement.executeQuery("select * from emp");
      
      //执行增、删、改
      int count = statement.executeUpdate("INSERT INTO account (id,NAME,money) VALUES (NULL,'jack', 100)");
      int count = statement.executeUpdate("update account set money = 0 where name = 'jack'");
      int count = statement.executeUpdate("delete from account where name = 'jack'");
      
      //任意SQL,这里是DDL
      String sql = "CREATE TABLE USER(\n" +
                      "\tid INT PRIMARY KEY AUTO_INCREMENT,\n" +
                      "\tusername VARCHAR(20),\n" +
                      "\tPASSWORD VARCHAR(50)\n" +
                      ")";
      boolean isQuery = statement.execute(sql);
      

3.5 处理结果集

  • 查询的结果集对象:java.sql.ResultSet
  • 要想循环遍历,需要:
    • 向下移动行指针:next()
      • true:移动成功
      • false:移动失败
    • 获取指针所在行的某一列数据:
      • getXXX(int 列序号):XXX是数据类型,列序号:从1开始的
      • getXXX(String 列名称):XXX是数据类型

注意:一定要先向下移动一次行指针,才可以获取到数据;否则会报错

while (resultSet.next()) {
    //字段是什么类型,就获取成为什么类型的,推荐
    int id = resultSet.getInt("id");
    String ename = resultSet.getString("ename");
    Date joindate = resultSet.getDate("joindate");
    double salary = resultSet.getDouble("salary");

    //获取的类型,可以和字段类型不同,但是不建议
    String id = resultSet.getString("id");
    Object ename = resultSet.getObject("ename");
    String joindate = resultSet.getString("joindate");
    String salary = resultSet.getString("salary");

    //通过列序号获取数据,基本不用
    /*int id = resultSet.getInt(1);
            String ename = resultSet.getString(2);
            Date joindate = resultSet.getDate(5);
            double salary = resultSet.getDouble(6);*/

    System.out.println("id:"+id+", ename:"+ename +", joindate:"+joindate+", salary:"+salary);
}

3.6 释放资源

/*
        6.释放资源。顺序:ResultSet=>Statement=>Connection
         */
resultSet.close();
statement.close();
connection.close();
  1. JDBC工具类封装

5. JDBC的事务管理

5.1 事务管理相关的API

事务管理的方法,都是由Connection对象提供的:

  • 开启事务:connection.setAutoCommit(false)
  • 提交事务:connection.commit()
  • 回滚事务:connection.rollback()

5.2 事务管理的步骤

try{
    //1.注册驱动
    //2.获取连接
    //===开启事务=== 只要在执行SQL之前开启即可
    //3.创建SQL执行平台
    //4.执行SQL语句
    //5.处理结果
    //===关闭事务:提交事务=== 只要在释放资源之前,关闭事务即可
}catch(Exception e){
    //===关闭事务:回滚事务===
}finally{
    //6.释放资源
}

内容回顾

  1. DCL(了解)
  2. JDBC快速入门:导入jar包之后,步骤如下:
    1. 注册驱动
    2. 获取连接
    3. 创建SQL执行平台
    4. 执行SQL语句
    5. 处理结果
    6. 释放资源
  3. 执行SQL语句的不同API:
    1. 执行DML语句:statement.executeUpdate(sql),返回int,表示影响行数
    2. 执行DQL语句:statement.executeQuery(sql),返回ResultSet,表示查询的结果集对象
    3. 执行任意语句:statement.execute(sql),返回boolean,表示是否执行了查询操作/是否有ResultSet
  4. 处理结果集ResultSet:
    1. 先向下移动行指针:next()
      • 如果返回true:移动成功
      • 如果返回false:移动失败
    2. 获取指针所在行的数据:
      1. getXXX(int 列序号)
      2. getXXX(String 列名称)
  5. JDBC的事务管理
    1. 相关的API
      • 开启事务:connection.setAutoCommit(false)
      • 提交事务:connection.commit()
      • 回滚事务:connection.rollback()
    2. 事务管理的步骤

加强练习:

通过JDBC+scanner,完成添加员工信息的功能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值