首页 > 数据库 >JDBC实现多数据库切换

JDBC实现多数据库切换

时间:2024-08-02 18:28:23浏览次数:14  
标签:JDBC String URL 数据库 DRIVER 切换 PASS public

一、编译环境

  • JDK:1.8
  • IDEA:2023.1.2

二、maven依赖

   <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.28</version>
    </dependency>
    
    <!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8 -->
    <dependency>
      <groupId>com.oracle.database.jdbc</groupId>
      <artifactId>ojdbc8</artifactId>
      <version>23.2.0.0</version>
    </dependency>
    
    <dependency>
      <groupId>com.oracle.database.nls</groupId>
      <artifactId>orai18n</artifactId>
      <version>23.2.0.0</version>
    </dependency>

三、JDBCUtils

package main.com.xl.utils;


import main.com.xl.eunm.JDBCEunm;

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class JDBCUtils {
    /*
     *
     * @author xxxxx
     * @date 2024/8/2/002 17:12
     * @return java.sql.Connection
     */
    public static void queryExample(JDBCEunm jdbcEunm, String sql)  {
        try {
            Class.forName(jdbcEunm.getJDBC_DRIVER());
            Connection connection = DriverManager.getConnection(jdbcEunm.getDB_URL(),jdbcEunm.getUSER(),jdbcEunm.getPASS());
            PreparedStatement stmt = connection.prepareStatement(sql);   // 创建对象并预编译
            ResultSet resultSet = stmt.executeQuery();
            System.out.println(convertList(resultSet));
            resultSet.close();
            stmt.close();
            connection.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    private static List<Map> convertList(ResultSet rs) throws SQLException{
        List<Map> list = new ArrayList<>();
        ResultSetMetaData md = rs.getMetaData();//获取键名
        int columnCount = md.getColumnCount();//获取列的数量
        while (rs.next()) {
            Map<String,Object> rowData = new HashMap<>();//声明Map
            for (int i = 1; i <= columnCount; i++) {
                rowData.put(md.getColumnName(i), rs.getObject(i));//获取键名及值
            }
            list.add(rowData);
        }
        return list;
    }
    public static void main(String[] args) {
        String mSQL = "*****************";
        String oSQL = "*****************";
        queryExample(JDBCEunm.ORACLE,oSQL);
        queryExample(JDBCEunm.MYSQL,mSQL);
    }

}

四、JDBCEunm

package main.com.xl.eunm;

public enum JDBCEunm {
    MYSQL("com.mysql.cj.jdbc.Driver",
            "jdbc:mysql://ip:端口号/数据库?useSSL=false&serverTimezone=UTC",
            "root",
            "root"),
    ORACLE("oracle.jdbc.driver.OracleDriver",
            "jdbc:oracle:thin:@ip:端口号:orcl",
            "system",
            "root");
    private String JDBC_DRIVER;
    private String DB_URL;
    private String USER;
    private String PASS;

    JDBCEunm(String JDBC_DRIVER, String DB_URL, String USER, String PASS){
        this.JDBC_DRIVER = JDBC_DRIVER;
        this.DB_URL = DB_URL;
        this.USER = USER;
        this.PASS = PASS;
    }

    public String getJDBC_DRIVER() {
        return JDBC_DRIVER;
    }

    public String getDB_URL() {
        return DB_URL;
    }

    public String getUSER() {
        return USER;
    }

    public String getPASS() {
        return PASS;
    }

    @Override
    public String toString() {
        return "JdbcEunm{" +
                "JDBC_DRIVER='" + JDBC_DRIVER + '\'' +
                ", DB_URL='" + DB_URL + '\'' +
                ", USER='" + USER + '\'' +
                ", PASS='" + PASS + '\'' +
                '}';
    }
}

标签:JDBC,String,URL,数据库,DRIVER,切换,PASS,public
From: https://www.cnblogs.com/Robin-Lin/p/18339356

相关文章

  • MHA高可用配置及故障切换
    目录MHA高可用配置及故障切换MHA定义MAH的组成MHA特点MHA工作原理实验:搭建MySQLMHA案例拓扑图案例实施四台服务器关闭防火墙防护,连接所有会话101、102、103、104设置host文件安装MySQL数据库连接会话102、103、104设置主库配置从服务器配置启动修改登录密码......
  • DDL-数据库类型
       修改表结构--增加一个字段:    sql:showdatabases;--查看数据库createdatabaseitcast;--创建数据库itcasecreatedatabaseifnotexistsitcast;--如果不存在数据库itcast的话则创建itcastdropdatabaseifEXISTSitcast;--如果存在数据库itcast则......
  • 数据库 - 已成功与服务器建立连接,但在登录过程中发生错误。(提供程序:SSL提供程序,错误:0-
    今天我在写一个.NET6API时,我使用了Dapper框架配置数据库连接,配置好之后,在链接DB时出现错误,发现错误是Microsoft.Data.SqlClient引起的,使用System.Data.SqlClient就可以正常访问,错误信息如下:Aconnectionwassuccessfullyestablishedwiththeserver,butthenanerroro......
  • 达梦数据库系列—45.系统存储过程总结
    目录参数数据库表执行计划会话备份恢复数据守护归档日志SQLLOG统计信息参数查询数值类型参数值--语法格式:selectSF_GET_PARA_VALUE(scopeint,paranamevarchar(256));--SCOPE参数为1表示获取INI文件中配置参数的值--SCOPE参数为2表示获取内存中......
  • 达梦数据库系列—44.SQL调优
    目录SQL优化思路1、定位慢sql2、SQL分析方法2.1执行计划2.2ET工具2.3dbms_sqltune工具3、SQL语句优化3.1索引3.2SQL语句改写3.3表设计优化3.4表的连接方式3.5HINT4、统计信息SQL优化思路1、定位慢sql待优化的SQL大致可分为两类:1、SQL执行时间在十......
  • 使用pg_basebackup备份和恢复一个pg数据库
    创建用于备份用的用户:创建数据库备份用户:psql-Upostgres-c"CREATEUSERdbbackupWITHREPLICATIONPASSWORD'123456'"-U指定备份用户-c指定创建用户命令备份用户只需要授权:replication即可创建用于备份的目录:创建备份目录:mkdir-p/pgdata/backup/如果不是本......
  • MySQL:初识数据库&初识SQL&创建数据库
    目录1、初识数据库1.1什么是数据库1.2 什么是MySQL2、数据库2.1 数据库服务&数据库2.2C/S架构3、初识SQL3.1什么是SQL3.2 SQL分类 4、使用SQL4.1查看所有数据库4.1.2语句解析 4.2创建数据库4.2.1 ifnotexists校验 4.2.2手动明确字符集和排序规......
  • PGjdbc源码试读(二)
    本期目标追踪Connection.createStatement()Statement.executeUpdate(Stringsql)追踪Connection.createStatement()在PgConnection中找到createStatement()方法:该方法调用了同名方法,并传递了两个参数,查询两个常量的注释:TYPE_FORWARD_ONLY表示返回的集合ResultSet只......
  • A086-基于SpringBoot+vue实现的在线小说阅读平台(源码+数据库+部署文档+包运行)
    (=======如需源码请查看博主个人信息介绍,可联系博主获取源码=============)开发语言和框架:JDK版本:确保使用JDK1.8,以支持SpringBoot的最新特性和性能优化。服务器:使用Tomcat7作为您的应用程序的服务器,提供可靠的运行环境和良好的性能。数据库:选择MySQL5.7作为......
  • sql更新数据库表的某一字段每条记录的随机数
    sql更更新数据库表的某一字段每条记录的随机数(6位随机数)使用游标实现,以下代码在SQL里执行即可--声明游标DECLARE@user_idvarchar(36)DECLAREuser_extension_cursorCURSORFORSELECTid--表里唯一识别ID(改为自己表里的字段名)FROM[test].[dbo].[my_table]--表名......