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

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

目录
相关文章
|
1月前
|
XML Java 数据库连接
性能提升秘籍:如何高效使用Java连接池管理数据库连接
在Java应用中,数据库连接管理至关重要。随着访问量增加,频繁创建和关闭连接会影响性能。为此,Java连接池技术应运而生,如HikariCP。本文通过代码示例介绍如何引入HikariCP依赖、配置连接池参数及使用连接池高效管理数据库连接,提升系统性能。
59 5
|
27天前
|
JSON Java 关系型数据库
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
41 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
|
1月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
53 3
|
1月前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
61 2
|
1月前
|
Java 数据库连接 数据库
如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面
本文介绍了如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面。通过合理配置初始连接数、最大连接数和空闲连接超时时间,确保系统性能和稳定性。文章还探讨了同步阻塞、异步回调和信号量等并发控制策略,并提供了异常处理的最佳实践。最后,给出了一个简单的连接池示例代码,并推荐使用成熟的连接池框架(如HikariCP、C3P0)以简化开发。
51 2
|
1月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
36 1
|
1月前
|
Java 数据库连接 数据库
Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销
本文深入探讨了Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销,显著提升了系统的响应速度和吞吐量。文章介绍了连接池的工作原理,并以HikariCP为例,展示了如何在Java应用中使用连接池。通过合理配置和优化,连接池技术能够有效提升应用性能。
52 1
|
1月前
|
监控 Java 数据库连接
在Java开发中,数据库连接管理是关键问题之一
在Java开发中,数据库连接管理是关键问题之一。本文介绍了连接池技术如何通过预创建和管理数据库连接,提高数据库操作的性能和稳定性,减少资源消耗,并简化连接管理。通过示例代码展示了HikariCP连接池的实际应用。
21 1
|
存储 消息中间件 缓存
面试疑难点解析——Java数据库开发(一)
阿里云再offer 5000人,数据库人才求贤若渴!7月9日 19:00,阿里云数据库事业部的两位技术大咖在线直招10多个岗位,想要进入阿里云吗?快来投递简历吧:https://developer.aliyun.com/special/offerday01
面试疑难点解析——Java数据库开发(一)
|
NoSQL Java 关系型数据库
面试疑难点解析——Java数据库开发(七)
本文介绍事务处理的四个特性:ACID,以及开发中可能见到的事务处理模式。