当前位置: 首页 > news >正文

JDBC-Util工具类

  根据前面的代码,当我们要对数据库进行大量的操作时,会产生非常多的重复代码。而且不利于后续的修改操作,因此我们可以写一个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+"行数据");

 

再次执行查询:

 


http://www.mrgr.cn/news/70076.html

相关文章:

  • 高效实现自动化运维的Python工具开发与集成
  • VSCode本地C/C++环境配置
  • 人工智能、机器学习与深度学习:层层递进的技术解读
  • YOLOv7-0.1部分代码阅读笔记-datasets.py
  • 【LeetCode】【算法】19. 删除链表的倒数第N个结点
  • QT信号和槽与自定义的信号和槽
  • sql专题 之 三大范式
  • JAVA-顺序表ArrayList(实现ArrayList)
  • 控制台中,为什么会打印出烫烫烫?--那些中文乱码问题【more cpp-8】
  • 编程范式(Programming paradigm)
  • 多线程的创建方式以及及Thread类详解
  • 2024下半年系统架构师考试【回忆版】
  • 大数据程序猿不可不看的资料大全
  • 【模型】EfficientvitSAM
  • PGMP-串串01概述
  • multi_agents
  • 10个文献翻译工具推荐,实现专业翻译的好帮手。
  • 多处理器一致协议(MSI)协议详细介绍
  • #渗透测试#SRC漏洞挖掘#深入挖掘CSRF漏洞01
  • Linux学习笔记之软件包管理RPM与YUM
  • 渗透测试-网络基础(1)
  • 时序预测 | 改进图卷积+informer时间序列预测,pytorch架构
  • 《Docker镜像与容器技术基础操作及应用研究》
  • shodan5(泷羽sec)
  • core-js 解决浏览器兼容性问题的工具之一
  • css3D变换用法