【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)

大家都在看

  • 开源、强大的Linux服务器集群管理工具,比宝塔好用!

    在这之前肯定很多人都接触过Linux管理面板:宝塔,宝塔的确非常方便而且好用,安装也简单,复制粘贴几句命令即可安装完成,且提供免费版。今天呢,民工哥向大家介绍另一个Linux的服务…

    数据库 2023年6月9日
    0150
  • CenoOS 7环境下编译OpenJDK8

    一、准备工作 1.1、不再使用”$make sanity”来检查编译环境,而是改用”$./configure” 1.2、不再使用an…

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

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

    数据库 2023年6月14日
    0102
  • MIT 6.824 Lab2D Raft之日志压缩

    书接上文Raft Part C | MIT 6.824 Lab2C Persistence。 实验准备 实验代码: git://g.csail.mit.edu/6.824-gola…

    数据库 2023年6月14日
    0147
  • 【大厂面试必备系列】滑动窗口协议

    引言 想象一下这个场景:主机 A 一直向主机 B 发送数据,不考虑主机 B 的接收能力,则可能导致主机 B 的接收缓冲区满了而无法再接收数据,从而导致大量的数据丢包,引发重传机制。…

    数据库 2023年6月6日
    092
  • CSS样式

    css概述 层叠样式表(cascading style sheet) 层叠是指==将多个样式施加在一个元素(标签)上== 作用: 美化页面 将html代码与样式代码分离 好处: 功…

    数据库 2023年6月16日
    084
  • Navicat 连接服务器不成功(Access denied for user ‘root’@ ‘*.*.*.*’ (using password: YES))

    出现的原因一般是服务器的root用户没有开启访问权限,一般来说值允许本地的访问。 解决方法: 一:第一种方法 1、首先打开xshell连接服务器的终端 2、以root权限登录 my…

    数据库 2023年6月11日
    058
  • MySQL启动过程详解二:核心模块启动 init_server_components()

    mysqld_main() 函数中,init_server_components() 函数负责MySQL核心模块的启动,包括mdl系统,Innodb存储引擎的启动等等: mdl子系…

    数据库 2023年6月9日
    079
  • Linux进程管理

    进程管理 基本概念介绍 进程和线程 进程: 一个在内存中运行的应用程序,每一个进程都有自己独立的一块内存空间,并被分配一个ID号(PID),在Windows下可以打开任务管理器查看…

    数据库 2023年6月16日
    0100
  • 删除chrome的域名安全策略

    使用过程中总有特殊情况必须使用http请求、又或者必须使用https请求 目前有两种思路,一种是浏览器默认开了http转https请求,像chrome和Firefox,另一种就是服…

    数据库 2023年6月6日
    088
  • Spark知识点总结

    Spark基础 Spark优势 优秀的数据模型与丰富计算抽象 Spark 借鉴了 MapReduce 思想发展而来,保留了其分布式并行计算的优点并改进了其明显的缺陷。 让中间数据存…

    数据库 2023年6月6日
    072
  • tomcat加载启动过程

    流程图 posted @2022-08-19 17:43 默念x 阅读(9 ) 评论() 编辑 Original: https://www.cnblogs.com/monianxd…

    数据库 2023年6月16日
    078
  • 浅谈GTID及简单测试

    今天简单介绍一下GTID,并有部分相关实验。 GTID相信大家都不陌生,GTID的英文全称为Global Transaction Identifier,在MySQL主从架构中应用广…

    数据库 2023年6月16日
    057
  • 一个校验接口引发的思考–我真的了解Response吗

    一个校验接口 最近,我需要对接一个外部接口,基本功能是:校验指定的门店是否完善了货运信息。接口大致是这样的: POST https://******/Dealer/CheckCar…

    数据库 2023年6月6日
    095
  • 红黑树

    2-3-4树 JAVA技术交流群:737698533 定义 所有的叶子节点都拥有相同的深度 节点只能是2-节点,3-节点,或者4-节点 2节点 包含一个元素的节点,有两个子节点 3…

    数据库 2023年6月16日
    057
  • 初识MySQL数据库

    一 、引言 假设现在你已经是某大型互联网公司的高级程序员,让你写一个火车票购票系统,来hold住双十一期间全国的购票需求,你怎么写? 因为同时抢票的人太多,你的程序不可能写在一台机…

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