首页 > 其他分享 >JDBC-Util工具类

JDBC-Util工具类

时间:2024-11-10 23:16:57浏览次数:3  
标签:JDBC String rs sql Util props 工具 properties conn

  根据前面的代码,当我们要对数据库进行大量的操作时,会产生非常多的重复代码。而且不利于后续的修改操作,因此我们可以写一个jdbc的工具类,让它从配置文件中读取配置参数,然后创建连接对象。

properties

  properties配置文件是一种用于存储应用程序配置信息的文本文件。通过properties配置文件,可以使程序的配置信息与程序逻辑代码分离,便于维护和修改。

  • 文件名:通常以“.properties”为后缀名。
  • 内容格式:由一系列键值对组成,每个键值对表示一个配置项,键值对之间使用等号“=”分隔。例如,“database.url=jdbc:mysql://localhost:3306/mydb”表示一个数据库连接的配置项。

创建一个db.properties文件,里面填入关于数据库的四大参数:

driverClass = com.mysql.jdbc.Driver
jdbcUrl = jdbc:mysql://localhost:3306/esa?useSSL=false
username = root
password = 123456

 jdk有一个对应的类import java.util.Properties;是Map接口实现类,key和value都是String。

 读取一个properties文件,解析数据,变成key/value结构,存储到properties对象

getClassLoader()获取类加载器 

Properties props = new Properties();
props.load(jdbcUtil.class.getClassLoader().getResourceAsStream("db.properties"));

获取properties文件里的value值可以使用:

props.getProperty("Key值");


util工具类

在调用方法的时候直接加载驱动类,所以卸载静态代码块中:

    //加载数据库的四大参数
    static {
        try{
            props.load(jdbcUtil.class.getClassLoader().getResourceAsStream("db.properties"));
            Class.forName(props.getProperty("driverClass"));

        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

在执行增删查改时自动获取连接对象。

  public static Connection getConnect() throws SQLException {
        String jdbcUrl = props.getProperty("jdbcUrl");
        String username = props.getProperty("username");
        String password = props.getProperty("password");
        return DriverManager.getConnection(jdbcUrl, username, password);
    }

接下来是增删查改的方法:

    //执行增删查的方法
    public static int executeUpdate(String sql,Object... params){
        try {
            conn = getConnect();
            stmt = conn.prepareStatement(sql);
            //给问号赋值
            for(int i = 0;i < params.length;i++){
                stmt.setObject(i+1,params[i]);
            }
            //执行
            return stmt.executeUpdate();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }finally {
            close(null);
        }

    }
    //查询方法,返回结果集
    public static ResultSet executeQuery(String sql,Object... params) throws SQLException {
        Connection conn = null;
        PreparedStatement pstmt = null;
        conn = getConnect();
        pstmt = conn.prepareStatement(sql);

        for(int i = 0;i < params.length;i++){
            pstmt.setObject(i+1,params[i]);
        }
        ResultSet resultSet = pstmt.executeQuery();
        return resultSet;
    }

最后关闭连接对象:

public static void close(ResultSet rs){
        try{
            if(rs != null) rs.close();
            if(stmt != null) stmt.close();
            if(conn != null) conn.close();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

测试

        //查询测试
        String sql = "select * from demo";
        try {
            ResultSet rs = jdbcUtil.executeQuery(sql);
            while (rs.next()){
                String name = rs.getString("name");
                String kecheng = rs.getString("kecheng");
                String fenshu  = rs.getString("fenshu");
                System.out.println(name+" "+kecheng+" "+fenshu);
            }

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

        String sql = "insert into demo(name,kecheng,fenshu) values('小红','java','88')";
        int i = jdbcUtil.executeUpdate(sql);
        System.out.println("共改变了"+i+"行数据");

 

再次执行查询:

 

标签:JDBC,String,rs,sql,Util,props,工具,properties,conn
From: https://blog.csdn.net/m0_74386799/article/details/143656613

相关文章

  • F12开发者工具
    控制台network浏览器F12进入。F5刷新参考文档:http请求中各参数详解_参数在request的哪个部位-CSDN博客一、总详解调试时使用最多的功能页面是:元素(ELements)、控制台(Console)、源代码(Sources)、网络(Network)等。元素(Elements)用于查看或修改HTML元素的属性、CSS属性、监听事......
  • Python pandas库:强大的数据处理工具
        在Python的数据处理领域,pandas库无疑是一颗璀璨的明星。它为数据分析和处理提供了高效、便捷的方法。一、pandas简介    pandas是一个用于数据处理和分析的Python库,提供了数据结构Series和DataFrame,使得数据的操作和分析变得更加容易。二、主要数据结构......
  • 产品手册工具在实验室仪器行业的应用
    大家好,这里是ai元启航,最近在学习ai知识,今天分享的是有关产品手册工具在实验室仪器行业的应用,我们知道,实验室仪器行业作为高新技术领域的重要组成部分,其产品手册的详尽程度与易用性对于用户的使用体验与满意度具有重要影响。为了提升产品手册的实用性与便捷性,越来越多的实验室仪器......
  • 金士顿 Kingston群联Phison系主控专用量产工具PS2251-XX
    设备描述:[G:]USB大容量存储设备(KingstonDataTraveler3.0)设备类型:大容量存储设备协议版本:USB3.20当前速度:高速(HighSpeed)电力消耗:504mAUSB设备ID:VID=0951PID=1666设备序列号:E0D55E629079E7A1C88602C7设备供应商:Kingston设备名称:......
  • springboot毕设 垃圾识别工具箱 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着社会的不断进步和人民生活水平的提高,音乐艺术教育逐渐成为大众关注的焦点。乐器培训作为音乐艺术教育的重要组成部分,近年来得到了快速发展。然而,......
  • 【CRM系统选型指南:国内八大主流工具比较】
    本文将对十大主流CRM系统进行比较:纷享销客、ZohoCRM、Pipedrive、简信CRM、HubSpotCRM、八百客CRM、金蝶CRM、浪潮CRM、销售易CRM本文将深入评比2024年主流的CRM系统,帮助你了解各系统之间的主要区别、优缺点以及当前的发展趋势。通过详细的比较和分析,为你提供一个清晰的......
  • SRE云计算运维之基础篇二:权限管理,VIM工具,文件查询及shell基础
    目录文件权限管理访问控制列表ACLVIM的使用及内容查询文本三剑客基本正则和扩展正则shell脚本之变量简单总结一下linux中的权限1.首先介绍一下关于linux中的用户:Linux中每个用户是通过UserId(UID)来唯一标识的,且Linux中可以将一个或多个用户加入用户组中,用户组是通过G......
  • 分享一个超强的网页自动化工具!写得快,跑得快,开发人员狂喜(带私活)
       「今天分享一个开源项目:可控制浏览器,也可收发数据包,可模拟键盘和鼠标的操作」背景做数据采集的同学应该知道,当我们采集要登录的网站时,不仅要分析数据包、JS源码,构造复杂的请求,还要应付验证码、JS混淆、签名参数等反爬手段,门槛较高,开发效率不高。然后使用浏览器,可以......
  • 一文彻底弄懂JUC工具包的Semaphore
    Semaphore是Java并发包(java.util.concurrent)中的重要工具,主要用于控制多线程对共享资源的并发访问量。它可以设置“许可证”(permit)的数量,并允许指定数量的线程同时访问某一资源,适合限流、资源池等场景。下面从源码设计、底层原理、应用场景、以及与其它JUC工具的对比来详......
  • 含 Latex 公式的矢量绘图工具
    InkscapeInkscape安装TexText扩展,使得Inkscape在制图过程中可以插入LaTeX公式。TexText扩展安装教程:https://textext.github.io/textext/install/windows.html以上两点是按照TexText扩展成功的必备条件,第一点在安装Inkscape1.4时必须勾选红框部分,默认安装......