在jdbc中执行DQL查询语句使用的方法为:executeQuery(sql);这个方法会返回一个ResultSet类的对象

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

例子:我要封装一张员工表如下

Java开发游标 jdbc游标_sql

 

当我在java程序里面执行

String sql="select * from emp";
ResultSet rs=执行对象.executeQuery(sql);

这张员工表的信息就被封装到rs对象中。这个时候这张表就好像被添加了一个类似图片中的红色箭头的指针,我们叫做游标,初始的时候游标指向第一行,我们需要移动游标来使得游标到达我们需要取数据的那一行。

ResultSet类中的next()方法;

在ResultSet类中,有一个专门用来移动游标的方法next();当我们执行代码(接着前面封装员工表返回的对象rs)

rs.next();

游标会向下移动一行,如图

Java开发游标 jdbc游标_java_02

 

这个时候我们对列操作就可以获取数据

对列操作:ResultSet类中的getXxx(参数);方法

1.在方法getXxx()中,XXX表示你想要获取的数据类型,传入的参数可以是列名,例如接着上面,游标指向张三这行后执行

String name=rs.getString(NAME);

那么返回值就是name=张三;

Java开发游标 jdbc游标_封装_03

 

2.getXxx()方法中传入的参数也可以是第几列,当游标指向张三这行给的时候,执行代码

Int id=rs.getInt(1);

那么返回值id=1,表示的是获取当前游标所在行的第一个属性的数据那么就是张三的id。

资源的关闭

获取到ResultSet对象后,使用完后需要关闭资源

close();方法

rs.close();

JDBC_ResultSet类的应用示例,通过封装员工表emp,获取第一行的name属性和id属性并打印

import java.sql.*;
//#使用select语句获取表中的数据

//ResultSet类得应用
public class JDBC_Demo6 {
    public static void main(String[] args) {

        Connection conn=null;
        Statement stmt=null;
        ResultSet rs=null;
        //1.导入jar包
        try {
            //2.加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //3.创建连接对象
            conn = DriverManager.getConnection("jdbc:mysql:///db2", "root", "root");
            //4.获取sql执行对象Statement
            stmt = conn.createStatement();
            //5.设置sql语句
            String sql="select * from emp";
            //6.执行sql,select语句用executeQuery方法,获取ResultSet对象
            rs = stmt.executeQuery(sql);
            //7.处理结果
            //用ResultSet类里面得next方法移动游标到数据行上
            rs.next();
            //用ResultSet类得getInt方法取出当前游标所在行得id
            int id = rs.getInt("id");
            //用ResultSet类的getString方法取出当前游标所在的行的第二个列属性,第二个属性为name,是String类的
            String name = rs.getString(2);
            //输出结果查看
            System.out.println(id+"---"+name);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            //在finally里关闭资源
            //判断是否为空,不为空证明获取对象成功,要关闭资源
            if (conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

            if (stmt!=null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

            if (rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

执行结果如下:

Java开发游标 jdbc游标_数据库_04