Java的数据库连接工具类的编写

简介: Java的数据库连接工具类的编写
Java的数据库连接工具类的编写

步骤:

1. 定义变量
2. 通过反射进行读取配置文件
3. 实例化Properties读取配置文件中的各个属性
4. 关闭字节输入流
5. 类加载
6. 通过驱动管理的获取连接方法获取到连接对象
7. 释放资源

代码:

package cn.javabs.util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/**
  * @author: Mryang
  * Jdbc工具类:  工具类的含义是作为一个通用的辅助资料使用,简化开发流程,提高效率。
  *             工具类一般使用“static”进行修饰,静态化
  *         static的优点
  *           |---- 1. 可以使用 【类名.函数名称】进行调用,不必再次创建对象
  *           |---- 2. 优于构造函数先执行
  *           |---- 4. 静态成员被所有对象所共享(静态数据达到成为共享数据)
  *           |---- 3. 随着类的加载而加载 (也就是说类运行了,静态成员也就跟随运行了) 
  *         static的缺点
  *           |---- 1. 访问出现局限性,只能访问静态
  *           |---- 2. 静态成员的生命周期过长
  *           |---- 3. 不可以与this\super关键字同用
  *                |----因为this代表是当前类对象,而静态存在时,有可能没有对象
  *                |----因为super代表是父类对象,而静态存在时,有可能没有对象,
  *                                 |----而且静态优先于对象存在
  *           |----4.静态方法只能访问静态成员, 非静态方法既可以访问静态又可以访问非静态; 
  *           
  * 
  **/
public class JdbcUtil {
  
  // 定义 数据库驱动
  private static String driverClass;
  // 定义 数据库的连接
  private static String url;
  // 定义 数据库用户
  private static String user;
  // 定义 数据库用户的密码
  private static String password;
  
  // 静态代码块
  static{
    try {
    //  JdbcUtil.class是获得当前对象所属的class对象 
    //  getClassLoader()是取得该Class对象的类装载器 
    //  getResourceAsStream(“dbcfg.properties”) 调用类加载器的方法加载资源,返回是字节输入流 
      InputStream in = JdbcUtil.class.getClassLoader().getResourceAsStream("dbcfg.properties");
      // 实例化Properties对象,目的是为了创建props
      Properties props = new Properties();
      // 在props对象中可以进行加载属性列表到Properties类对象
      props.load(in);//也就是说: 通过props对象进行加载输入流对象(in)
       /*
      * 通过getProperty方法用指定的键在此属性列表中搜索属性
      */
      //也就是说: 通过props对象进行获取【dbcfg.properties】中的指定的键-driverClass(被指定)
      driverClass = props.getProperty("driverClass");
      //也就是说: 通过props对象进行获取【dbcfg.properties】中的指定的键-url(被指定)
      url = props.getProperty("url");
      //也就是说: 通过props对象进行获取【dbcfg.properties】中的指定的键-user(被指定)
      user = props.getProperty("user");
      //也就是说: 通过props对象进行获取【dbcfg.properties】中的指定的键-password(被指定)
      password = props.getProperty("password");
      //已经获取过配置文件中的属性键值对,将字节输入流进行释放关闭
      in.close();
    } catch (IOException e) {
      // 转换异常抛出
      throw new ExceptionInInitializerError("获取数据库配置文件信息失败");
    }
    try {
      // 类加载-->驱动
      Class.forName(driverClass);
    } catch (ClassNotFoundException e) {
      // 转换异常抛出
      throw new ExceptionInInitializerError("加载驱动失败");
    }
  }
  
  /**
   * 获取连接
   * @return: conn
   */
  public static Connection getConnection(){
    try {
      //连接类型  连接对象  =  驱动管理中的获取连接(连接,用户名,密码)
      Connection conn = DriverManager.getConnection(url,user,password);
      // 将连接进行返回
      return conn;
    } catch (Exception e) {
      // 转换异常抛出
      throw new RuntimeException("链接数据库的url或用户名密码错误,请检查您的配置文件");
    }
  }
  
  /**
   * 释放资源
   * 传递三个参数: 结果集对象 ,处理Sql语句对象 , 连接对象  
   * 无返回值状态
   */
  public static void release(ResultSet rs,Statement stmt,Connection conn){
    //如果 结果集中不为空
    if(rs!=null){
      try {
        rs.close();//将结果集中关闭
      } catch (SQLException e) {
        e.printStackTrace();
      }
      rs = null;
    }
    //如果处理Sql语句对象不为空
    if(stmt!=null){
      try {
        stmt.close();//将处理Sql语句对象关闭
      } catch (SQLException e) {
        e.printStackTrace();
      }
      stmt = null;
    }
    //如果 连接不为空
    if(conn!=null){
      try {
        conn.close();//将连接关闭
      } catch (SQLException e) {
        e.printStackTrace();
      }
      conn = null;
    }
  }
}

配置文件编写:

#driver config for mysql
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
user=root
password=sorry

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

目录
相关文章
|
10月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
11月前
|
Java 关系型数据库 MySQL
Java汽车租赁系统源码(含数据库脚本)
Java汽车租赁系统源码(含数据库脚本)
410 4
|
11月前
|
NoSQL Java API
在Java环境下如何进行Redis数据库的操作
总的来说,使用Jedis在Java环境下进行Redis数据库的操作,是一种简单而高效的方法。只需要几行代码,就可以实现复杂的数据操作。同时,Jedis的API设计得非常直观,即使是初学者,也可以快速上手。
441 94
|
12月前
|
人工智能 JSON Java
列表结构与树结构转换分析与工具类封装(java版)
本文介绍了将线性列表转换为树形结构的实现方法及工具类封装。核心思路是先获取所有根节点,将其余节点作为子节点,通过递归构建每个根节点的子节点。关键在于节点需包含 `id`、`parentId` 和 `children` 三个属性。文中提供了两种封装方式:一是基于基类 `BaseTree` 的通用工具类,二是使用函数式接口实现更灵活的方式。推荐使用后者,因其避免了继承限制,更具扩展性。代码示例中使用了 Jackson 库进行 JSON 格式化输出,便于结果展示。最后总结指出,理解原理是进一步优化和封装的基础。
391 0
|
前端开发 JavaScript Java
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
485 17
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
1904 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
488 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
673 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
SQL Java 关系型数据库
使用 JDBC 实现 Java 数据库操作
JDBC(Java Database Connectivity)是 Java 提供的数据库访问技术,允许通过 SQL 语句与数据库交互。本文详细介绍了 JDBC 的使用方法,包括环境准备、编程步骤和完整示例。
1150 7
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
1705 6

热门文章

最新文章