JDBC查询表中多条数据

在while循环中将每一行数据封装成对象,将其存储到集合当中,使用Lambda表达式输出数据
代码如下:

//测试查询多条数据
    public void testManyQueryForStudent(){
        String sql="select *from student where Sdept=?";
        List<Student> is = manyQueryForStudent(sql, "IS");
        is.forEach(System.out::println);
    }
    //查询多条数据
    public List<Student> manyQueryForStudent(String sql,Object...args){
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            //1.获取连接
            conn = JDBCutils.getConnection();
            //2.编译sql语句,返回prepareStatement实例
            ps = conn.prepareStatement(sql);
            //3.通过循环设置占位符的值
            for(int i=0;i<args.length;i++){
                ps.setObject(i+1,args[i]);
            }
            //4.执行并返回结果集
            rs = ps.executeQuery();
            //获取结果集的元数据
            ResultSetMetaData rsm = rs.getMetaData();
            //通过ResultSetMetaData获取结果集中的列数
            int count = rsm.getColumnCount();
            ArrayList<Student> list = new ArrayList<Student>();
            while (rs.next()){
                //如果有值,创建一个student对象
                Student student = new Student();
                for(int i=0;i<count;i++){
                    Object studentValue = rs.getObject(i + 1);
                    //获取每一个列的列名
                    String studentName = rsm.getColumnLabel(i + 1);
                    //通过反射studentName属性,赋值为studentValue
                    Field filed = Student.class.getDeclaredField(studentName);
                    //属性可能是私有的,通过setAccessible(true)访问
                    filed.setAccessible(true);
                    filed.set(student,studentValue);
                }
                list.add(student);
            }
            return list;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCutils.closeResource(ps,conn,rs);
        }
return null;
    }

效果如下:
在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
查询数据库中的多条数据,可以使用 JDBC 中的 ResultSet 对象。 首先,需要使用 Java 中的 JDBC API 连接到数据库,并执行查询语句。查询语句可以使用 SQL 语句的 SELECT 语句,例如: ``` SELECT * FROM table_name; ``` 这个查询语句将会返回表中的所有行和所有列。 接下来,使用 JDBC 中的 Statement 对象执行查询语句,并获取 ResultSet 对象: ``` Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM table_name"); ``` ResultSet 对象包含了查询结果的所有行和列。可以使用 rs.next() 方法来逐一遍历 ResultSet 中的每一行数据,例如: ``` while (rs.next()) { String column1 = rs.getString("column1"); int column2 = rs.getInt("column2"); // ... } ``` 其中,rs.getString("column1") 和 rs.getInt("column2") 方法用于获取当前行中指定列的数据。可以根据需要获取 ResultSet 中的任意列数据,也可以选择只获取部分列的数据。 最后,使用完 ResultSet 对象后,需要调用 rs.close() 方法来释放资源。完整示例代码如下: ``` try { // 连接数据库 Connection connection = DriverManager.getConnection(url, username, password); // 执行查询语句 Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM table_name"); // 遍历查询结果 while (rs.next()) { String column1 = rs.getString("column1"); int column2 = rs.getInt("column2"); // ... } // 释放资源 rs.close(); stmt.close(); connection.close(); } catch (SQLException e) { // 处理异常 e.printStackTrace(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大磊程序员(“hello world”)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值