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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 学习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
 */
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对象,再用集合存放起来。

//执行查询,返回结果集
        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.关闭资源


重要的一步:

//关闭资源
        rs.close();
        pstm.close();
        connection.close();

 

4.返回结果集:


遍历集合,输出结果集:

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

 

完整的代码:

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);
    }
}

返回结果:

微信图片_20221030133843.png

对比数据库中数据:

微信图片_20221030133855.png

完成啦…


如果你觉得有帮助:


✨点赞✨


✨收藏✨


✨关注✨


✨评论✨

微信图片_20221029111446.jpg



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5天前
|
Java 数据库连接 网络安全
JDBC数据库编程(java实训报告)
这篇文章是关于JDBC数据库编程的实训报告,涵盖了实验要求、实验环境、实验内容和总结。文中详细介绍了如何使用Java JDBC技术连接数据库,并进行增删改查等基本操作。实验内容包括建立数据库连接、查询、添加、删除和修改数据,每个部分都提供了相应的Java代码示例和操作测试结果截图。作者在总结中分享了在实验过程中遇到的问题和解决方案,以及对Java与数据库连接操作的掌握情况。
JDBC数据库编程(java实训报告)
|
11天前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
34 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
11天前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
47 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
|
6天前
|
SQL Java 数据库连接
JDBC连接SQL Server2008 完成增加、删除、查询、修改等基本信息基本格式及示例代码
这篇文章提供了使用JDBC连接SQL Server 2008数据库进行增加、删除、查询和修改操作的基本步骤和示例代码。
|
6天前
|
SQL 存储 Java
完整java开发中JDBC连接数据库代码和步骤
该博客文章详细介绍了使用JDBC连接数据库的完整步骤,包括加载JDBC驱动、提供连接URL、创建数据库连接、执行SQL语句、处理结果以及关闭JDBC对象的过程,并提供了相应的示例代码。
|
11天前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
22 6
|
11天前
|
存储 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
21 4
|
11天前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(中)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
18 3
|
5天前
|
SQL 存储 Java
完整java开发中JDBC连接数据库代码和步骤
该博客文章详细介绍了使用JDBC连接数据库的完整步骤,包括加载JDBC驱动、提供连接URL、创建数据库连接、执行SQL语句、处理结果以及关闭JDBC对象的过程,并提供了相应的示例代码。
|
3月前
|
Java 关系型数据库 数据库连接
实时计算 Flink版操作报错之在使用JDBC连接MySQL数据库时遇到报错,识别不到jdbc了,怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。