前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java工具集-数据库工具类

Java工具集-数据库工具类

作者头像
cwl_java
发布2020-02-11 13:32:06
1.1K0
发布2020-02-11 13:32:06
举报
文章被收录于专栏:cwl_Java
  1. 代码示例
代码语言:javascript
复制
package com.simple.util.config.database;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

/**
 * @program: simple_tools
 * @description: 数据库工具类
 * @author: ChenWenLong
 * @create: 2019-12-31 10:29
 **/
public class DataBaseUtils {

    /**
     * 功能描述:
     * 〈获取数据库连接〉
     *
     * @params : [db]
     * @return : java.sql.Connection
     * @author : cwl
     * @date : 2019/12/31 10:31
     */
    public static Connection getConnection(DataBase db) throws Exception {
        Properties props = new Properties();
        props.put("remarksReporting","true");//获取数据库的备注信息
        props.put("user",db.getUserName());
        props.put("password",db.getPassWord());
        Class.forName(db.getDriver());//注册驱动
        return DriverManager.getConnection(db.getUrl(),props);
    }

    /**
     * 功能描述:
     * 〈获取数据库列表〉
     *
     * @params : [db]
     * @return : java.util.List<java.lang.String>
     * @author : cwl
     * @date : 2019/12/31 10:31
     */
    public static List<String> getSchemas(DataBase db) throws Exception {
        //1.获取元数据
        Connection connection = getConnection(db);
        DatabaseMetaData metaData = connection.getMetaData();
        //2.获取所有数据库列表
        ResultSet rs = metaData.getCatalogs();
        List<String> list = new ArrayList<>();
        while (rs.next()) {
            list.add(rs.getString(1));
        }
        rs.close();
        connection.close();
        return list;
    }

    // 数据库内部类
    public static class DataBase {
        //127.0.0.1:3306/cwl
        private static final String mysqlUrl = "jdbc:mysql://[ip]:[port]/[db]?useUnicode=true&amp;characterEncoding=UTF8";
        private static final String oracleUrl = "jdbc:oracle:thin:@[ip]:[port]:[db]";

        private String dbType;//数据库类型
        private String userName;
        private String passWord;


        private String driver;
        private String url;

        public DataBase() {}

        public DataBase(String dbType) {
            this(dbType,"127.0.0.1","3306","");
        }

        public DataBase(String dbType,String db) {
            this(dbType,"127.0.0.1","3306",db);
        }


        /**
         *
         * @param dbType        数据库类型
         * @param ip            ip
         * @param port          3306
         * @param db            cwl
         */
        public DataBase(String dbType,String ip,String port,String db) {
            this.dbType = dbType;
            if("MYSQL".endsWith(dbType.toUpperCase())) {
                this.driver="com.mysql.jdbc.Driver";
                this.url=mysqlUrl.replace("[ip]",ip).replace("[port]",port).replace("[db]",db);
            }else{
                this.driver="oracle.jdbc.driver.OracleDriver";
                this.url=oracleUrl.replace("[ip]",ip).replace("[port]",port).replace("[db]",db);
            }
        }

        public String getDbType() {
            return dbType;
        }

        public void setDbType(String dbType) {
            this.dbType = dbType;
        }

        public String getDriver() {
            return driver;
        }

        public void setDriver(String driver) {
            this.driver = driver;
        }

        public String getUserName() {
            return userName;
        }

        public void setUserName(String userName) {
            this.userName = userName;
        }

        public String getPassWord() {
            return passWord;
        }

        public void setPassWord(String passWord) {
            this.passWord = passWord;
        }

        public String getUrl() {
            return url;
        }

        public void setUrl(String url) {
            this.url = url;
        }
    }

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档