JDBC-ResultSet

JDBC-ResultSet

ResultSet(结果集对象)作用:封装了DQL查询语句的结果
ResultSet stmt.excuteQuery(sql); 执行DQL语句,返回ResultSet对象

查询结果

boolean next(); (1) 将光标从当前位置向前移动一行 (2) 判断当前行是否为有效行
返回值:True:有效行,当前行有数据;False:无效行,当前行没有数据

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

使用步骤

// 循环判断游标是否是最后一行末尾
while(rs.next()){
    // 获取数据
    rs.getXxx(参数);
}

案例

public class JDBCDemo5_ResultSet {
    /**
     * 执行DQL语句
     * @throws SQLException
     */
    @Test
    public void testResultSet() throws SQLException {
        // 1. 注册驱动
        // Class.forName("com.mysql.jdbc.Driver");

        // 2. 获取连接
        //String url = "jdbc:mysql:///db1";
        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("------------");
        }*/
        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();
    }
}