前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【JDBC】IDEA连接数据库,执行查询操作,返回结果集并输出。

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

作者头像
.29.
发布2022-11-15 14:04:22
2.7K0
发布2022-11-15 14:04:22
举报
文章被收录于专栏:个人技术博客

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

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

JDBC专栏

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


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

前言

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


一、与数据库建立连接

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

代码语言:javascript
复制
        //加载驱动
        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语句查询信息:

代码语言:javascript
复制
USE fruitdb;
SELECT * FROM t_fruit;

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

查询所有信息:

代码语言:javascript
复制
String sql = "select * from t_fruit";//查询全部

//创建预处理对象命令
PreparedStatement pstm = connection.prepareStatement(sql);

//查询操作的sql语句中没有 ? ,不需要进行参数填充

查询指定行信息:

代码语言:javascript
复制
String sql = "select * from t_fruit where fid = ?";//查询指定行

//创建预处理对象命令
PreparedStatement pstm = connection.prepareStatement(sql);

//有未指定参数?,使用预处理对象填充参数
pstm.setInt(1,5);//填充数值(需填充参数位置,填充值)

查询数据总数:

代码语言:javascript
复制
String sql = "select count(*) from t_fruit";//查询列表数量

PreparedStatement pstm = connection.prepareStatement(sql);

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

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

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

提供了各种构造方法以及Get,Set方法的fruit类

代码语言:javascript
复制
/**
 * @author .29.
 * @create 2022-09-15 21:45
 */
public class Fruit {
    public Fruit() {
    }

    public Fruit(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;
    }

    @Override
    public String toString() {
        return "Fruit{" +
                "fid=" + fid +
                ", fname='" + fname + '\'' +
                ", price=" + price +
                ", fcount=" + fcount +
                ", remark='" + remark + '\'' +
                '}';
    }

    public Integer getFid() {
        return fid;
    }

    public void setFid(Integer fid) {
        this.fid = fid;
    }

    public String getFname() {
        return fname;
    }

    public void setFname(String fname) {
        this.fname = fname;
    }

    public Integer getPrice() {
        return price;
    }

    public void setPrice(Integer price) {
        this.price = price;
    }

    public Integer getFcount() {
        return fcount;
    }

    public void setFcount(Integer fcount) {
        this.fcount = fcount;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

        private Integer fid;
        private String fname;
        private Integer price;
        private Integer fcount;
        private String remark;



}

2.执行查询操作:

在这一步,我们需要使用刚才创建的预处理命令对象,调用查询操作的方法:executeQuery(),遍历查询得到的每一行信息,将数据放入fruit对象,再用集合存放起来。

代码语言:javascript
复制
        //执行查询,返回结果集
        ResultSet rs = pstm.executeQuery();

        List<Fruit> list = new ArrayList<>();//创建集合,利用泛型声明存放类型为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 = new Fruit(fid,fname,price,fcount,remark);
            list.add(fruit);//再用集合存放
            }

3.关闭资源

重要的一步:

代码语言:javascript
复制
        //关闭资源
        rs.close();
        pstm.close();
        connection.close();

4.返回结果集:

遍历集合,输出结果集:

代码语言:javascript
复制
       list.forEach(System.out::println);

完整的代码:

代码语言:javascript
复制
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * @author .29.
 * @create 2022-09-21 23:15
 */
public class Demo04 {
    public static void main(String[] args) throws ClassNotFoundException, 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 = new ArrayList<>();//创建集合,利用泛型声明存放类型为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 = new Fruit(fid,fname,price,fcount,remark);
            list.add(fruit);//再用集合存放
        }
        //关闭资源
        rs.close();
        pstm.close();
        connection.close();

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

返回结果:

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

对比数据库中数据:

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

完成啦…

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JDBC专栏
    • 连接数据库,查询并输出结果集
    • 前言
    • 一、与数据库建立连接
      • 1.加载驱动,利用驱动管理器连接数据库
        • 2.编写查询操作的SQL语句
        • 二、执行查询操作,返回结果集
          • 1.创建fruit类,用于创建保存信息的fruit对象
            • 2.执行查询操作:
              • 3.关闭资源
                • 4.返回结果集:
                相关产品与服务
                数据库
                云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档