JDBC连接

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包,叫数据库驱动包

    • 要操作什么数据库,就必须有什么数据库的驱动包

2. ==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();

 

4. 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、付费专栏及课程。

余额充值