JDBC处理查询结果集(select)

第五步:处理查询结果集(遍历结果集)只有在select语句时才会处理,增删改(insert、delete、update)没有第五步

三种遍历结果集方式:

第一方式: 数字1,2,3代表每行的第1,2,3列,循环输出每行;
String empno = rs.getString(1);
String ename = rs.getString(2);
String sal = rs.getString(3);
System.out.println(empno + “,” + ename + “,” + sal);

第三方式:除了可以String类型取出之外,还可以以特定的类型取出,特定类型可以进行数学运算.
int empno = rs.getInt(“a”);//重点注意:列名称不是表中的列名称,是查询结果集的列名称
String ename = rs.getString(“ename”);
double sal = rs.getDouble(“sal”);//double类型进行数学运算
System.out.println(empno + “,” + ename + “,” + (sal+200));

ResultSet接口类型的 executeQuery方法 专门执行select语句的方法

package com.jdbc;

import java.sql.*;

/**
 * 5.处理查询结果集(遍历结果集)(只有select语句才有这步)
 * ResultSet executeQuery(select) 专门执行sql语句的方法
 * */
public class JDBCTest05 {
    public static void main(String[] args) {
        //为了释放资源,放在外面写
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
            //1.注册驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2.获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode?serverTimezone=GMT%2B8", "root", "jh7851192");
            //3.获取数据库操作对象
            stmt = conn.createStatement();

            //4.执行SQL语句
            String sql = "select empno as a,ename,sal from emp1";
            //int executeUpdate(insert/delete/update)
            //ResultSet executeQuery(select)
            rs = stmt.executeQuery(sql);//专门执行select语句的方法

            //5.处理查询结果集(只有select语句才有这步)
            //rs.next()为boolean返回值
            //getString()方法的特点:不管数据库中的数据类型是什么,都以String的形式输出
            while (rs.next()) {
                //第一方式: 数字1,2,3代表每行的第1,2,3列,循环输出每行。
                /**String empno = rs.getString(1);
                String ename = rs.getString(2);
                String sal = rs.getString(3);
                System.out.println(empno + "," + ename + "," + sal);*/

                //第二方式:为了健壮语句
                /**String empno = rs.getString("a");//重点注意:列名称不是表中的列名称,是查询结果集的列名称
                String ename = rs.getString("ename");
                String sal = rs.getString("sal");
                System.out.println(empno + "," + ename + "," + sal);*/

                //第三方式:除了可以String类型取出之外,还可以以特定的类型取出,特定类型可以进行数学运算
                int empno = rs.getInt("a");//重点注意:列名称不是表中的列名称,是查询结果集的列名称
                String ename = rs.getString("ename");
                double sal = rs.getDouble("sal");//double类型进行数学运算
                System.out.println(empno + "," + ename + "," + (sal+200));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //6.释放资源(逆序释放)
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }

            }
        }
    }
}
/*结果:
7369,SMITH,800.0
7499,ALLEN,1600.0
7521,WARD,1250.0
7566,JONES,2975.0
7654,MARTIN,1250.0
7698,BLAKE,2850.0
7782,CLARK,2450.0
7788,SCOTT,3000.0
7844,TURNER,1500.0
7876,ADAMS,1100.0
7900,JAMES,950.0
7902,FORD,3000.0
7934,MILLER,1300.0*/
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用JDBC处理大结果时,可能会遇到Java堆空间不足的问题。这通常发生在结果太大,无法一次性加载到内存中时。为了解决这个问题,可以使用MySQL JDBC的setFetchSize()方法。 setFetchSize()方法是JDBC API的一部分,用于设置从数据库中获取行的数量。默认情况下,JDBC会将所有行一次性加载到内存中。但是,通过设置fetchSize,可以控制JDBC在内存中缓存的行的数量。 以下是使用setFetchSize()方法来解决JDBC处理大结果的示例代码: ```java import java.sql.*; public class JdbcExample { public static void main(String[] args) throws Exception { String url = "jdbc:mysql://localhost:3306/mydatabase"; String user = "myuser"; String password = "mypassword"; Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); String sql = "SELECT * FROM mytable"; stmt.setFetchSize(100); // 设置每次获取100行结果 ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { // 处理结果 } rs.close(); stmt.close(); conn.close(); } } ``` 在上面的示例代码中,我们将每次获取100行结果,这样就可以避免将所有结果一次性加载到内存中,从而避免Java堆空间不足的问题。 需要注意的是,setFetchSize()方法不是所有JDBC驱动程序都支持的。如果你的驱动程序不支持这个方法,那么你需要使用其他方法来处理大结果,例如使用分页查询或者将结果写入文件中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值