java常用工具类之数据库连接类(可以连接多种数据库)

下面是详细的讲解:

1. 前言

数据库连接是Java应用程序开发的必需环节之一,因为Java应用程序经常需要与数据库打交道。在Java中,可以使用Java内置的JDBC API来实现与数据库的连接操作。不过,每次手动编写连接代码显然不太现实,因此我们通常会使用一些现成的数据库连接工具类来完成这些操作。本文就是讲解如何编写一个通用的数据库连接类。

2. 设计思路

基于JDBC API来构建一个通用的数据库连接工具类,需要完成以下几个任务:

  1. 封装数据库连接信息,即主机IP地址、端口号、用户名和密码,以及数据库名称;
  2. 实现数据库连接的开启和关闭功能,并能够自动回收连接;
  3. 支持多种常用数据库连接方式,例如MySQL、Oracle、SQL Server等;
  4. 对外提供简单易用的API接口,使得Java应用程序能够方便地使用该工具类。

3. 代码实现

接下来我们就来实现上述功能,代码如下:

import java.sql.*;

public class DBUtils {
    private Connection conn;
    private String url;
    private String user;
    private String password;
    private String driverClass;

    public DBUtils(String url, String user, String password, String driverClass) throws ClassNotFoundException {
        this.url = url;
        this.user = user;
        this.password = password;
        this.driverClass = driverClass;
        Class.forName(driverClass);
    }

    public synchronized Connection getConnection() throws SQLException {
        if (conn != null && !conn.isClosed()) {
            return conn;
        }
        conn = DriverManager.getConnection(url, user, password);
        return conn;
    }

    public synchronized void closeConnection() throws SQLException {
        if (conn != null && !conn.isClosed()) {
            conn.close();
            conn = null;
        }
    }
}

代码说明如下:

  1. getConnection() 方法用于获取数据库连接对象;如果连接对象已经存在且未关闭,则直接返回;否则获取新的连接对象;
  2. closeConnection() 方法用于关闭连接对象,并将变量值置空;
  3. 构造函数中传入的参数包括:数据库连接字符串、用户名、密码和驱动程序类名;
  4. 该类中没有提供获取数据源、创建 Statement、PreparedStatement 等其他常用方法,这些方法可以通过返回的连接对象自行获取。

4. 示例

下面是两个简单例子,分别展示如何使用该数据库连接工具类来连接MySQL和Oracle数据库:

4.1 MySQL 连接示例

import java.sql.SQLException;

public class TestDBUtilsMySQL {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        String url = "jdbc:mysql://localhost:3306/test?useSSL=false";
        String user = "root";
        String password = "root";
        String driverClass = "com.mysql.jdbc.Driver";

        DBUtils dbUtils = new DBUtils(url, user, password, driverClass);

        System.out.println("MySQL Connection Established");

        dbUtils.closeConnection();
    }
}

MySQL 连接字符串的格式为:jdbc:mysql://ip:port/databaseName。其中,ip 是 MySQL 数据库所在的主机 IP 地址;port 是 MySQL 服务器监听的端口号,默认是 3306;databaseName 是具体的数据库名称。useSSL=false 表示不启用 SSL 连接。

4.2 Oracle 连接示例

import java.sql.SQLException;

public class TestDBUtilsOracle {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        String url = "jdbc:oracle:thin:@192.168.0.200:1521:ORCL";
        String user = "scott";
        String password = "tiger";
        String driverClass = "oracle.jdbc.driver.OracleDriver";

        DBUtils dbUtils = new DBUtils(url, user, password, driverClass);

        System.out.println("Oracle Connection Established");

        dbUtils.closeConnection();
    }
}

Oracle 连接字符串的格式为:jdbc:oracle:thin:@ip:port:databaseName。其中,ip 和 port 分别是 Oracle 数据库所在的主机 IP 地址和监听的端口号;databaseName 是 Oracle 数据库的实例名。

5. 总结

通过本文的讲解,我们了解了如何构建一个通用的数据库连接工具类。该工具类支持多种常用的数据库连接,例如MySQL、Oracle、SQL Server等。通过该工具类,我们可以轻松地获取数据库连接对象,并能够自动回收连接,确保程序的可靠性和高性能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java常用工具类之数据库连接类(可以连接多种数据库) - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 6000+字讲透ElasticSearch 索引设计

    ElasticSearch 索引设计 在MySQL中数据库设计非常重要,同样在ES中数据库设计也是非常重要的 概述 我们创建索引就像创建表结构一样,必须非常慎重的,索引如果创建不好后面会出现各种各样的问题 索引设计的重要性 索引创建后,索引的分片只能通过_split和_shrink接口对其进行成倍的增加和缩减 主要是因为es的数据是通过_routing分配到…

    Java 2023年5月11日
    00
  • SpringBoot Loki安装简介及实战思路

    SpringBoot Loki安装简介及实战思路 1. 简介 Loki是一个针对日志处理的系统,由于Prometheus不是专门用于处理日志的,在日志处理上的性能和扩展性受到限制,于是就有了Loki。Loki是Prometheus旗下的一个项目,使用Go语言编写,将日志收集器的工作委托给客户端工具,将日志转储到后端,并提供基于标签的存储、聚合、查询和告警系统…

    Java 2023年5月26日
    00
  • editplus配置java编程环境详细介绍

    EditPlus配置Java编程环境详细介绍 EditPlus是一款文本编辑器,它可以为Java编程者提供良好的编程环境。以下是EditPlus的Java编程环境配置攻略,包括Java 开发工具包(JDK)和编译器环境的配置。 JDK安装 首先,我们需要下载最新的JDK。当前最新版本是JDK 16。通过Oracle官网下载JDK 安装程序并开始安装过程。 安…

    Java 2023年5月23日
    00
  • Java外观模式解读,让你的代码优雅又高效

    Java 外观模式解读,让你的代码优雅又高效 什么是外观模式? 外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个简单的接口,用于访问复杂系统中的一组子系统。这种类型的设计模式属于结构型模式,因为它可以为系统提供一个简单的接口,以隐藏系统的复杂性,使得客户端可以更加方便地访问系统。 为什么要使用外观模式? 在项目开发过程中,当我们的系…

    Java 2023年5月31日
    00
  • 源码解读Spring-Integration执行过程

    源码解读Spring-Integration执行过程的完整攻略: 简介 Spring-Integration 是 Spring 基于事件驱动、消息推送的一种框架。它是 Spring 企业级开发的一个扩展模块,用于实现不同系统之间的数据交换。Spring-Integration 同时也是 Spring Boot 的子模块之一。它可以使用各种类型的消息传输协议,…

    Java 2023年5月20日
    00
  • SpringBoot整合Druid数据源过程详解

    以下是SpringBoot整合Druid数据源的详细攻略。 准备工作 引入相关依赖 为了使用Druid数据源,我们需要在pom.xml文件中添加以下依赖: <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-star…

    Java 2023年5月20日
    00
  • 从零开始搭建springboot+springcloud+mybatis本地项目全过程(图解)

    下面我将详细讲解“从零开始搭建springboot+springcloud+mybatis本地项目全过程(图解)”的完整攻略。 1. 准备工作 首先,我们需要准备一个Java开发环境,可以通过官网下载JDK安装包并进行安装。同时,我们需要下载并安装IDE,例如Eclipse、IntelliJ IDEA等。接着,我们需要下载并安装Maven,用于管理项目依赖。…

    Java 2023年5月15日
    00
  • java与微信小程序实现websocket长连接

    下面是详细讲解“java与微信小程序实现websocket长连接”的完整攻略。 什么是WebSocket长连接 WebSocket是一种在单个TCP连接上进行全双工通信的协议。它通过在握手阶段将HTTP升级协议为WebSocket协议来实现。在握手成功后,客户端和服务器端可以互相推送消息,而不需要不断的发起HTTP请求和响应。 WebSocket长连接通常用…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部