JDBC编程——处理查询结果集(遍历结果集)

一、在学习处理查询结果集之前,我们先了解以下的一些常用接口以及方法

1、public interface ResultSet
   extends Wrapper, AutoCloseable

ResultSet接口:表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。

2、ResultSet executeQuery(String sql) throws SQLException

    参数 :sql - 要发送到数据库的SQL语句,通常是静态SQL SELECT语句

    执行给定的SQL语句,该语句返回单个ResultSet对象。
3、getString
String getString​(int columnIndex) throws SQLException
    以Java编程语言中 String此 ResultSet对象的当前行中指定列的值。 
参数: 
    columnIndex - 第一列是1,第二列是2,... 
结果 
    列值; 如果值为SQL NULL ,则返回的值为null 
4、next
boolean next() throws SQLException
    将光标从当前位置向前移动一行。 ResultSet光标最初位于第一行之前; 第一次调用方法next使第一行成为当前行; 第二个调用使第二行成为当前行,依此类推。 
    当对next方法的调用返回false ,光标位于最后一行之后。
结果:
    true表示新的当前行有效; false表示没有更多行

JDBC API主要功能:

  • DriverManager: 管理JDBC驱动

  • Connection:连接

  • Statement:增删查改

  • PreparedStatement:增删查改

  • esultSet:返回的结果集

到此为止,我们就可以实现JDBC连接数据库,处理查询结果集了。

二、处理查询结果集

import java.sql.*;
public class JDBCtest {
    public static void main(String[] args) {
        Connection conn = null;
        Statement statement = null;
        ResultSet rs = null;
        try{//1、注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2、获取数据库连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/sql","root","123456");
            //3、获取数据库操作对象
            statement = conn.createStatement();
            //4、执行sql
            String select = "select * from t_user";
            rs = statement.executeQuery(select);//专门执行DQL语句的方法
            //5、处理查询结果集
            /*Boolean flag = rs.next();//如果为true则表示表中有数据
            if (flag){
                //光标指向的行有数据
                //getString()方法的特点是:不管数据库中的数据类型是什么,都以String的形式取出
                //以下程序的1,2,3,4说的都是第几列(列数)
                String id = rs.getString(1);;//JDBC中所有下标都是从1开始的
                String username = rs.getString(2);
                String password = rs.getString(3);
                System.out.println(id+","+username+","+password);//1,jack,456
            }*/
    //但是上面的这种方式太繁琐了,一次是输出一行的数据,所以在这里可以进一步的优化:
            while (rs.next()){
                //而且这里也可以使用字段名,代替数字
                //注意,如果上面的查询语句中使用了as,即给某一列指定了别名,在这里也就一定要用别名
                String id = rs.getString("id");
                String username = rs.getString("username");
                String password = rs.getString("password");
                System.out.println(id+","+username+","+password);
                //在这里还有一点就是:可以以其它的数据类型取出,
                //取出什么类型的数据,就get该类型即可:比如int类型的id
                //int id = rs.getInt("id");
            }
        }catch (SQLException e){
            e.printStackTrace();
        }catch(ClassNotFoundException e){
            e.printStackTrace();
        }finally {//6、释放资源
            try{
                if (rs!=null){
                    rs.close();
                }
            }catch (SQLException e){
                e.printStackTrace();
            }
            try{
                if (statement!=null){
                    statement.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
            try{
                if (conn!=null){
                    conn.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}

输出结果:

/*  1,jack,456
    2,rose,1456
    3,zs,102
    4,ls,101
*/

好了,以上就是JAVA对JDBC操作的一种实现方式,与大家一起共享,对初学者可能有一定的帮助,当然对高手而 言,用处就不见的大了。

你的问题得到解决了吗?欢迎在评论区留言,提出更好的意见和建议 。  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-今非昔比°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值