30-jdbc的各个类详解

ResultSet:结果集对象,封装查询结果   查询查询查询

调用:ResultSet resultSet = stmt.executeQuery(sql);

其实sql语句中select*from 查询出来的就是结果集   ResultSet就是来封装查询结果的  我们做的就是从ResultSet中拿出来数据  

小概念  有一个游标(像集合的索引) 一开始指向表的第一行的表头位置(此时不能取数据)

游标移动指向第一行  把每一列都给取出来

此时涉及两个方法next();方法   getXxx(参数);方法
            * boolean next(): 游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false,如果不是则返回true
            * getXxx(参数):获取数据 : 一次获取某一行某一列的数据
                  * Xxx:代表数据类型   如:

int getInt();返回int类型 ,      getInt();方法

String getString();此方法返回一个字符串  getString();方法
                  * 参数:
                    1. int:代表列的编号,从1开始   如: getString(1)   好比上表是获取id这一列 这个编号是从1开始 比较特殊
                    2. String:代表列名称。 如: getDouble("balance")  这个是get 列名称balance 得到balance这一列

  

     注意代码里的

//执行sql这一步发生了变化
           rs = stmt.executeQuery(sql);  //这里rs就是已经获取道德数据集 其实我觉着就是呢个表
           //处理数据
            //0.1让游标向下移动一行
            rs.next();
            //0.2获取数据  //这里rs就是已经获取道德数据集 其实我觉着就是呢个表
            int id = rs.getInt(1);
            String name = rs.getString("name");
            double balance = rs.getDouble(3);
            System.out.println(id+"---"+name+"---"+balance);

package cn.itcast.jdbc;

import java.sql.*;

/*
DDL操作  创建表  但是一般不在这里面操作
 */
public class JdbcDemo06 {
    public static void main(String[] args) {
        Connection conn =null;
        Statement stmt=null;
        ResultSet rs=null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String sql = "select*from account";
            conn = DriverManager.getConnection("jdbc:mysql:///db3", "root", "root");
            stmt = conn.createStatement();
      //执行sql这一步发生了变化
           rs = stmt.executeQuery(sql);  //这里rs就是已经获取道德数据集 其实我觉着就是呢个表
           //处理数据
            //0.1让游标向下移动一行
            rs.next();
            //0.2获取数据  //这里rs就是已经获取道德数据集 其实我觉着就是呢个表
            int id = rs.getInt(1);
            String name = rs.getString("name");
            double balance = rs.getDouble(3);
            System.out.println(id+"---"+name+"---"+balance);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{  //释放资源 最后申请的先释放
            if (rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (stmt!=null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

 上面代码的不能直接把表所有的内容都查了因为这里看不到表里面有几行数据

         * 注意:正确代码使用步骤   正确的打开方式
                * 使用步骤:
                    1. 游标向下移动一行
                    2. 判断是否有数据
                    3. 获取数据

有next();方法:

* boolean next(): 游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false,如果不是则返回true

这里用while循环   是正确的写法

package cn.itcast.jdbc;

import java.sql.*;

/*
DDL操作  创建表  但是一般不在这里面操作
 */
public class JdbcDemo07 {
    public static void main(String[] args) {
        Connection conn =null;
        Statement stmt=null;
        ResultSet rs=null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String sql = "select*from account";
            conn = DriverManager.getConnection("jdbc:mysql:///db3", "root", "root");
            stmt = conn.createStatement();
            //执行sql这一步发生了变化
            rs = stmt.executeQuery(sql);  //这里rs就是已经获取道德数据集 其实我觉着就是呢个表
            //处理数据
            //0.1让游标向下移动一行 获取第一行(表头下面一行的数据)
           while(rs.next()){  //判断是否有数据  循环判断游标是否是最后一行末尾
            //0.2获取数据  //这里rs就是已经获取道德数据集 其实我觉着就是呢个表
            int id = rs.getInt(1);
            String name = rs.getString("name");
            double balance = rs.getDouble(3);
            System.out.println(id+"---"+name+"---"+balance);}

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{  //释放资源 最后申请的先释放
            if (rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (stmt!=null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

这里有两行数据直接全部都查询出来了 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值