JDBC学习----处理查询结果集

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 * @author zzw
 * @create 2020/11/07-9:43
 */
public class jdbcTest05 {
    public static void main(String[] args) {
        //获取连接
        Connection conn=null;
        //数据库操作对象
        Statement stmt=null;
        //将查询结果集封装到下面那个去    关闭的时候从下往上关
        ResultSet rs=null;

        try {
            //1注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2获取连接
            conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc","root","a");
            //3获取数据库操作对象
            stmt=conn.createStatement();
            //4执行sql
            String sql="select 语文,数学,英语 from jdbc01";
            //executeQuery这个方法是专门用来处理查询语句的,专门执行DQL语句的方法,不同的语句要用不同的Statement类方法
            //int executeUpdate(insert/delete/update)   增删改返回数量
            //ResultSet executeQuery(select)            查询语句返回结果集
            rs=stmt.executeQuery(sql);
            //5处理查询结果集

            /*
            boolean flag1=rs.next();//此时光标指向第一行,true
            if(flag1){
                //光标指向的行有数据
                //取数据
                //getString()方法的特点是:不管数据库中的数据类型是什么,都以string类型取出来
                //1,2,3指的是第几列
                String yw= rs.getString(1);//jdbc中所有下标从1开始,不是从0开始
                String sx= rs.getString(2);
                String yy= rs.getString(3);
                System.out.println(yw+","+sx+","+yy);
                //这样就得到了第一行的数据
            }
            //要想得到下一行的数据,我们就智能接着写
            flag1=rs.next();
            if(flag1){
                //光标指向的行有数据
                //取数据
                //getString()方法的特点是:不管数据库中的数据类型是什么,都以string类型取出来
                String yw= rs.getString(1);
                String sx= rs.getString(2);
                String yy= rs.getString(3);
                System.out.println(yw+","+sx+","+yy);
                //这样就得到了第二行的数据
            }
             */
            //实际高速版 rs.next()返回的本来就是boolean类型的
            while (rs.next()){
                /*
                String yw= rs.getString(1);
                String sx= rs.getString(2);
                String yy= rs.getString(3);
                System.out.println(yw+","+sx+","+yy);
                 */
                //实际中,更多的是使用列名,因为怕被调换了顺序,如果是别名则需要使用别名
                String yw= rs.getString("语文");
                String sx= rs.getString("数学");
                String yy= rs.getString("英语");
                System.out.println(yw+","+sx+","+yy);

                /*
                我们也可以直接以其他的数据形式取出来,该区其对应的get方法,直接为int等的好处是可以直接在这里进行数学运算
                int yw= rs.getInt("语文");
                double sx= rs.getDouble("数学");
                String yy= rs.getString("英语");
                System.out.println(yw+","+(sx+100)+","+yy);
                 */

            }

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //6释放资源
            if(rs!=null){
                try {
                    rs.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
            if(stmt!=null){
                try {
                    stmt.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
            if(conn!=null){
                try {
                    conn.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }

        }

    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值