【JDBC】编程(2)— 写一个JDBC工具类;用 JDBC工具类 实现模糊查询

JDBC工具类

功能:

简化JDBC部分代码书写

import java.sql.*;

public class DBUtil {

    /**
     * 工具类的构造方法都应该是私有的
     * 因为工具类是需要频繁使用的,所以我们要避免代码的重复书写
     * 将工具类方法都设为静态的,再将构造方法私有化(这样想new都new不出来),直接采用类名调用
     */

    //静态代码块在类加载时执行,并且只执行一次
    static {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    private DBUtil(){
    }

    /**
     * 获取数据库连接对象
     * @return 连接
     * @throws SQLException
     */

    //因为此方法是被调用的方法,所以出现异常直接上抛就行
    public static Connection getConnection () throws SQLException {
        return DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode"
                , "root", "888");
    }

    /**
     * 关闭资源
     * @param connection 连接资源
     * @param statement 数据库操作对象
     * @param resultSet 结果集
     */

    public static void close(Connection connection,Statement statement,ResultSet resultSet){
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

1、测试JDBC工具类的功能:

实现模糊查询(以”查哪个用户的密码中的第二个字符为’a’为例)

2、t_user:
+—-+———–+———-+———-+
| id | loginName | loginPwd | realName |
+—-+———–+———-+———-+
| 1 | abc | 123 | 张三 |
| 2 | 000000 | 000000 | 李四 |
| 7 | asd333 | aa000 | NULL |
| 8 | q7890 | 8a8a88 | NULL |
| 9 | 666a | 6a | NULL |
+—-+———–+———-+———-+

import java.sql.*;

public class JDBCTest03 {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement ps = null;
        ResultSet resultSet = null;

        try {
            //注册+获取连接
            connection = DBUtil.getConnection();

            //获取预编译的数据库操作对象
            String sql = "select loginPwd from t_user where loginPwd like ?";
            ps = connection.prepareStatement(sql);
            ps.setString(1,"_a%");

            //执行sql语句
            resultSet = ps.executeQuery();

            //处理查询结果集
            while (resultSet.next()){
                System.out.println(resultSet.getString("loginPwd"));
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            //关闭资源
            DBUtil.close(connection,ps,resultSet);
        }
    }
}

控制台输出结果:

aa000
8a8a88
6a

Process finished with exit code 0

总结:控制台输出结果正常,JDBC工具类 功能正常。

Original: https://www.cnblogs.com/Burning-youth/p/15759266.html
Author: 猿头猿脑的王狗蛋
Title: 【JDBC】编程(2)— 写一个JDBC工具类;用 JDBC工具类 实现模糊查询

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/507900/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Mybatis第三方PageHelper分页插件原理

    欢迎关注公号:BiggerBoy,看更多文章 往期精品 此时commentAnalyses为Page对象(PageHelper插件包内定义的) 而Page对象继承自JDK中的Arr…

    数据库 2023年6月11日
    094
  • 绕过国内域名备案

    情景:现有域名jsw.top,云服务器1台均在阿里云下。域名jsw.top、www.jsw.top CNAME解析到阿里云OSS的记录值(阿里云OSS会要求备案,导致无法使用),而…

    数据库 2023年6月14日
    093
  • Mysql 一主一从

    1. 主从原理 1.1 主从介绍 所谓 mysql 主从就是建立两个完全一样的数据库,其中一个为主要使用的数据库,另一个为次要的数据库,一般在企业中,存放比较重要的数据的数据库服务…

    数据库 2023年5月24日
    083
  • 主从复制直接转换MGR_5.7验证试验

    IP port role info 192.168.188.51 4000 node1 master 192.168.188.52 4000 node2 slave1 192.16…

    数据库 2023年6月16日
    0234
  • python_numpy数组入门

    NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。 在 NumPy中,每一个线性的数组称为是一个轴(axis…

    数据库 2023年6月11日
    090
  • BufferedImage类

    BufferedImage类(BufferedImage,是一个带缓冲区图像类,主要作用是将一副图片加载到内存中) BufferedImage类 是lmage的一个子类,Buffe…

    数据库 2023年6月11日
    0125
  • JDK自带线程池学习

    JDK自带线程池 线程池的状态 线程有如下状态 RUNNING状态:Accept new tasks and process queued tasks SHUTDOWN状态:Don…

    数据库 2023年6月11日
    0114
  • 自学SQL网题目解答与笔记

    Id Title Director Year Length_minutes 1 Toy Story John Lasseter 1995 81 2 A Bug’s Li…

    数据库 2023年5月24日
    0107
  • 简单!代码原来是这样被CPU跑起来的

    CPU对我们来说既熟悉又陌生,熟悉的是我们知道代码是被CPU执行的,当我们的线上服务出现问题时可能首先会查看CPU负载情况。陌生的是我们并不知道CPU是如何执行代码的,它对我们的代…

    数据库 2023年6月6日
    0100
  • Redis与Python连接实例

    2022-09-22 1、 Redis与Python建立连接之前需要先安装”Redis”安装包: 在ubantu中,打开终端,输入命令: sudo pip …

    数据库 2023年6月14日
    0114
  • Java的Lambda表达式

    函数式编程(Functional Programming)是把函数作为基本运算单元,函数可以作为变量,可以接收函数,还可以返回函数。历史上研究函数式编程的理论是Lambda演算,所…

    数据库 2023年6月9日
    0104
  • 关于.netcore6图片处理(生成缩略图、验证码、加水印)发布到docker(liunx)踩到的坑

    最近在开发一个项目,需要对图片进行处理,比如生成缩略图、生成图片验证码、图片添加水印等功能,项目使用.netcore6.0开发,开发系统使用的云桌面(win10系统),由于是云桌面…

    数据库 2023年6月9日
    095
  • 条件控制

    1. 顺序结构 java代码顺序执行 2. 选择结构 if语句 格式 if(结果为booblean类型的表达式){ 语句体; } if(结果为booblean类型的表达式){ 语句…

    数据库 2023年6月14日
    060
  • SQLZOO练习5–join(表的连接)

    game表: idmdatestadiumteam1team2 1001 8 June 2012 National Stadium, Warsaw POL GRE 1002 8 J…

    数据库 2023年6月16日
    083
  • 基于Spring实现策略模式

    背景: 看过很多策略模式,总结下来实现原理大体都差不多,在这里主要是讲解下自己基于Spring更优雅的实现方案;这个方案主要是看了一些开源rpc和Spring相关源码后的一些思路,…

    数据库 2023年6月6日
    0103
  • java 桥接方法

    1.桥接方法简介 桥接方法是jdk1.5引入泛型后,为使java泛型方法生成的字节码与jdk1.5版本之前的字节码兼容由编译器自动生成的。 可用 method.isBridge()…

    数据库 2023年6月16日
    0102
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球