• JDBC-Statement+ResultSet介绍


    JDBC-Statement

    1. Statement的作用是用来执行SQL语句(它会针对不同的sql语句执行不同的方法)
      • 执行DDL或者DML语句----》对应的会执行 int executeUpdate(String sql) 返回一个int类型数据,表示受到影响的行
      • 执行DQL -----》对应的要执行 ResultSet executeQuery(String sql)返回一个 ResultSet对象
      • 解释:DDL (数据定义语言) 常用的命令有creat drop alter 等命令
      • DML(数据操作语言)常用的命令有insert delete update
      • DQL(数据查询语言)select 返回一个对象
      • 其中在DML与DDL又有区别:DML执行成功后返回值一定>0,而DDL执行成功是可能会返回0.在后续开发中尽量少用DDL命令

    案例代码

    /**
      * 执行DML语句
      * @throws Exception
      */
    @Test
    public void testDML() throws  Exception {
        //1. 注册驱动
        //Class.forName("com.mysql.jdbc.Driver");
        //2. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写
        String url = "jdbc:mysql:///db1?useSSL=false";
        String username = "root";
        String password = "1234";
        Connection conn = DriverManager.getConnection(url, username, password);
        //3. 定义sql
        String sql = "update account set money = 3000 where id = 1";
        //4. 获取执行sql的对象 Statement
        Statement stmt = conn.createStatement();
        //5. 执行sql
        int count = stmt.executeUpdate(sql);//执行完DML语句,受影响的行数
        //6. 处理结果
        //System.out.println(count);
        if(count > 0){
            System.out.println("修改成功~");
        }else{
            System.out.println("修改失败~");
        }
        //7. 释放资源
        stmt.close();
        conn.close();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    /**
     1. 执行DDL语句
     2. @throws Exception
      */
    @Test
    public void testDDL() throws  Exception {
        //1. 注册驱动
        //Class.forName("com.mysql.jdbc.Driver");
        //2. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写
        String url = "jdbc:mysql:///db1?useSSL=false";
        String username = "root";
        String password = "1234";
        Connection conn = DriverManager.getConnection(url, username, password);
        //3. 定义sql
        String sql = "drop database db2";
        //4. 获取执行sql的对象 Statement
        Statement stmt = conn.createStatement();
        //5. 执行sql
        int count = stmt.executeUpdate(sql);//执行完DDL语句,可能是0
        //6. 处理结果
        System.out.println(count);
    
        //7. 释放资源
        stmt.close();
        conn.close();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    JDBC-ResultSet

    1. ResultSet(结果集对象)的作用:**封装了SQL查询语句的结果 **
    2. ResultSet对象提供了操作结果数据的方法

    boolean next()

    • 将光标从当前位置向前移动一行
    • 判断当前行是否为有效行

    方法返回值说明:

    • true : 有效行,当前行有数据
    • false : 无效行,当前行没有数据

    xxx getXxx(参数):获取数据

    • xxx : 数据类型;如: int getInt(参数) ;String getString(参数)
    • 参数
      • int类型的参数:列的编号,从1开始
      • String类型的参数: 列的名称

    案例代码

    /**
      * 执行DQL
      * @throws Exception
      */
    @Test
    public void testResultSet() throws  Exception {
        //1. 注册驱动
        //Class.forName("com.mysql.jdbc.Driver");
        //2. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写
        String url = "jdbc:mysql:///db1?useSSL=false";
        String username = "root";
        String password = "1234";
        Connection conn = DriverManager.getConnection(url, username, password);
        //3. 定义sql
        String sql = "select * from account";
        //4. 获取statement对象
        Statement stmt = conn.createStatement();
        //5. 执行sql
        ResultSet rs = stmt.executeQuery(sql);
        //6. 处理结果, 遍历rs中的所有数据
        /* // 6.1 光标向下移动一行,并且判断当前行是否有数据
            while (rs.next()){
                //6.2 获取数据  getXxx()
                int id = rs.getInt(1);
                String name = rs.getString(2);
                double money = rs.getDouble(3);
    
                System.out.println(id);
                System.out.println(name);
                System.out.println(money);
    
                System.out.println("--------------");
    
            }*/
        // 6.1 光标向下移动一行,并且判断当前行是否有数据
        while (rs.next()){
            //6.2 获取数据  getXxx()
            int id = rs.getInt("id");
            String name = rs.getString("name");
            double money = rs.getDouble("money");
    
            System.out.println(id);
            System.out.println(name);
            System.out.println(money);
    
            System.out.println("--------------");
        }
    
        //7. 释放资源
        rs.close();
        stmt.close();
        conn.close();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    结束!!!!!

  • 相关阅读:
    [附源码]java毕业设计大学新生军训管理系统
    预付费系统在学生公寓用电中的发展前景-Susie 周
    uni-app:允许字符间能自动换行(英文字符、数字等)
    ruby on rails 常用时间
    SpringBoot笔记:SpringBoot集成MyBatisPlus、Sqlite实战
    AutoGPT目前只是成功学大师GPT版
    监控画面时间同步校准
    C语言绘图
    sql16(Leetcode1251平均售价)
    MyBatis调用MySQL存储过程实例
  • 原文地址:https://blog.csdn.net/qq_53037676/article/details/125610523