0


【JDBC】IDEA连接数据库,执行查询操作,返回结果集并输出。

CSDN话题挑战赛第2期
参赛话题:学习笔记

在这里插入图片描述
在这里插入图片描述

JDBC专栏

(点击进入专栏)
【1】idea添加mysql-jar包
【2】使用IDEA连接数据库,执行增删改操作。
【3】IDEA连接数据库,执行查询操作,返回结果集并输出。


连接数据库,查询并输出结果集

前言

这篇文章将要介绍的,利用JDBC规范实现的查询操作,与上一篇文章中的增删改操作,是存在一致性的。
例如:加载驱动,利用驱动管理器连接数据库等;而不一样的地方在于,执行增删改使用的是更新方法

executeUpdate()

,接下来我们将使用新的方法,查询方法

executeQuery()


一、与数据库建立连接

1.加载驱动,利用驱动管理器连接数据库

//加载驱动Class.forName("com.mysql.jdbc.Driver");//驱动管理器,输入URL,用户名,密码Connection connection =DriverManager.getConnection("jdbc:mysql://localhost:3306/fruitdb?useSSL=false&useUnicode=true&CharacterEncoding=utf-8","root","..密码..");

这一步骤是需要进行异常处理的,这里暂时将异常抛出,不进行解决。
jdbc:mysql:// 是通信地址URL的固定开头

localhost:3306/ 代表本地连接,3306则是MySQL数据库的默认端口号
注意:若想在URL中添加需要的参数,首先使用 ?连接,如果需要带多个参数,第二个参数开始需要用&连接。

2.编写查询操作的SQL语句

在数据库中,查询操作是需要先应用指定的数据库,之后用查询的SQL语句查询信息:

USE fruitdb;SELECT*FROM t_fruit;

而到了IDEA中,我们需要将SQL语句作为字符串保存起来,在对SQL语句的字符串进行预处理,若语句中有为指定的参数,还需要用预处理对象来填充参数。

查询所有信息:
String sql ="select * from t_fruit";//查询全部//创建预处理对象命令PreparedStatement pstm = connection.prepareStatement(sql);//查询操作的sql语句中没有 ? ,不需要进行参数填充
查询指定行信息:
String sql ="select * from t_fruit where fid = ?";//查询指定行//创建预处理对象命令PreparedStatement pstm = connection.prepareStatement(sql);//有未指定参数?,使用预处理对象填充参数
pstm.setInt(1,5);//填充数值(需填充参数位置,填充值)
查询数据总数:
String sql ="select count(*) from t_fruit";//查询列表数量PreparedStatement pstm = connection.prepareStatement(sql);

二、执行查询操作,返回结果集

1.创建fruit类,用于创建保存信息的fruit对象

为了将每一行的所有内容输出,我们需要创建一个Fruit类,提供相应的方法,借此创建保存了一行所有数据信息的fruit对象。
再使用集合存储所有的fruit对象,最终进行输出(返回结果集)。

提供了各种构造方法以及Get,Set方法的fruit类
/**
 * @author .29.
 * @create 2022-09-15 21:45
 */publicclassFruit{publicFruit(){}publicFruit(Integer fid,String fname,Integer price,Integer fcount,String remark){this.fid = fid;this.fname = fname;this.price = price;this.fcount = fcount;this.remark = remark;}@OverridepublicStringtoString(){return"Fruit{"+"fid="+ fid +", fname='"+ fname +'\''+", price="+ price +", fcount="+ fcount +", remark='"+ remark +'\''+'}';}publicIntegergetFid(){return fid;}publicvoidsetFid(Integer fid){this.fid = fid;}publicStringgetFname(){return fname;}publicvoidsetFname(String fname){this.fname = fname;}publicIntegergetPrice(){return price;}publicvoidsetPrice(Integer price){this.price = price;}publicIntegergetFcount(){return fcount;}publicvoidsetFcount(Integer fcount){this.fcount = fcount;}publicStringgetRemark(){return remark;}publicvoidsetRemark(String remark){this.remark = remark;}privateInteger fid;privateString fname;privateInteger price;privateInteger fcount;privateString remark;}

2.执行查询操作:

在这一步,我们需要使用刚才创建的预处理命令对象,调用查询操作的方法:

executeQuery()

,遍历查询得到的每一行信息,将数据放入fruit对象,再用集合存放起来。

//执行查询,返回结果集ResultSet rs = pstm.executeQuery();List<Fruit> list =newArrayList<>();//创建集合,利用泛型声明存放类型为Fruit对象while(rs.next()){//利用循环,遍历查询到的每一行信息//将每一行中,每一列的信息都记录下来//rs对象的get方法中,可以填充列的位置,也可以填充列名来指定int fid = rs.getInt(1);String fname = rs.getString("fname");int price = rs.getInt(3);int fcount = rs.getInt("fcount");String remark = rs.getString(5);///将每一行的信息都存放进Fruit对象Fruit fruit =newFruit(fid,fname,price,fcount,remark);
            list.add(fruit);//再用集合存放}

3.关闭资源

重要的一步:
//关闭资源
        rs.close();
        pstm.close();
        connection.close();

4.返回结果集:

遍历集合,输出结果集:

       list.forEach(System.out::println);

完整的代码:

importjava.sql.*;importjava.util.ArrayList;importjava.util.List;/**
 * @author .29.
 * @create 2022-09-21 23:15
 */publicclassDemo04{publicstaticvoidmain(String[] args)throwsClassNotFoundException,SQLException{//加载驱动Class.forName("com.mysql.jdbc.Driver");//驱动管理器,输入URL,用户名,密码Connection connection =DriverManager.getConnection("jdbc:mysql://localhost:3306/fruitdb?useSSL=false&useUnicode=true&CharacterEncoding=utf-8","root","Deng07112003");String sql ="select * from t_fruit";//查询全部PreparedStatement pstm = connection.prepareStatement(sql);//执行查询,返回结果集ResultSet rs = pstm.executeQuery();List<Fruit> list =newArrayList<>();//创建集合,利用泛型声明存放类型为Fruit对象while(rs.next()){//利用循环,遍历查询到的每一行信息//将每一行中,每一列的信息都记录下来//rs对象的get方法中,可以填充列的位置,也可以填充列名来指定int fid = rs.getInt(1);String fname = rs.getString("fname");int price = rs.getInt(3);int fcount = rs.getInt("fcount");String remark = rs.getString(5);///将每一行的信息都存放进Fruit对象Fruit fruit =newFruit(fid,fname,price,fcount,remark);
            list.add(fruit);//再用集合存放}//关闭资源
        rs.close();
        pstm.close();
        connection.close();

        list.forEach(System.out::println);}}

返回结果:

在这里插入图片描述

对比数据库中数据:

在这里插入图片描述

完成啦…

如果你觉得有帮助:

✨点赞✨

✨收藏✨

✨关注✨

✨评论✨
在这里插入图片描述


本文转载自: https://blog.csdn.net/ebb29bbe/article/details/126984274
版权归原作者 .29. 所有, 如有侵权,请联系我们删除。

“【JDBC】IDEA连接数据库,执行查询操作,返回结果集并输出。”的评论:

还没有评论