Mysql和Oracle 数据库操作工具类

适配Mysql和Oracle数据源

文章目录

    • 1. 适配Mysql和Oracle数据源
    • 2. 适配于Mysql数据源
    • 3. 适配Oeacle数据源

1. 适配Mysql和Oracle数据源

package cn.stylefeng.guns.generator.core.util;
import cn.stylefeng.guns.generator.modular.entity.DatabaseInfo;
import lombok.extern.slf4j.Slf4j;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** @ClassName Dbutils* @Deacription TODO* @Author gblfy* @Date 2019/6/5 9:30* @Version 1.0**/
@Slf4j
public class Dbutils {/*** 查询某个数据库连接的所有表** @author fengshuonan* @Date 2019-05-04 20:30*/public static List<Map<String, Object>> selectTables(DatabaseInfo dbInfo) {ArrayList<Map<String, Object>> list = new ArrayList<>();PreparedStatement preparedStatement = null;try {Class.forName(dbInfo.getJdbcDriver());Connection conn = DriverManager.getConnection(dbInfo.getJdbcUrl(), dbInfo.getUserName(), dbInfo.getPassword());String jdbcUrl = dbInfo.getJdbcUrl();/*****************************Mysql和Oracle数据源不同部分 Start******************************/if (jdbcUrl.contains("oracle")) {String dbName = dbInfo.getUserName();String db = dbName.toUpperCase();preparedStatement = conn.prepareStatement("SELECT S.TABLE_NAME AS tableName,S.COMMENTS AS  tableComment  FROM SYS.dba_TAB_comments S  WHERE S.OWNER = '" + db + "'");} else if (jdbcUrl.contains("mysql")) {int first = jdbcUrl.lastIndexOf("/") + 1;int last = jdbcUrl.indexOf("?");String dbName = jdbcUrl.substring(first, last);preparedStatement = conn.prepareStatement("select TABLE_NAME as tableName,TABLE_COMMENT as tableComment from information_schema.`TABLES` where TABLE_SCHEMA = '" + dbName + "'");}/*****************************Mysql和Oracle数据源不同部分 End******************************/  ResultSet resultSet = preparedStatement.executeQuery();while (resultSet.next()) {HashMap<String, Object> map = new HashMap<>();String tableName = resultSet.getString("tableName");String tableComment = resultSet.getString("tableComment");map.put("tableName", tableName);map.put("tableComment", tableComment);list.add(map);}return list;} catch (Exception ex) {log.error("执行sql出现问题!", ex);return null;}}/*** 查询某个表的所有字段** @author fengshuonan* @Date 2019-05-04 20:31*/public static List<Map<String, Object>> getTableFields(DatabaseInfo dbInfo, String tableName) {ArrayList<Map<String, Object>> list = new ArrayList<>();PreparedStatement preparedStatement = null;try {Class.forName(dbInfo.getJdbcDriver());Connection conn = DriverManager.getConnection(dbInfo.getJdbcUrl(), dbInfo.getUserName(), dbInfo.getPassword());String jdbcUrl = dbInfo.getJdbcUrl();/*****************************Mysql和Oracle数据源不同部分 Start******************************/       if (jdbcUrl.contains("oracle")) {String dbName = dbInfo.getUserName();String db = dbName.toUpperCase();String tb = tableName.toUpperCase();preparedStatement = conn.prepareStatement("SELECT T.COLUMN_NAME  as columnName,S.COMMENTS as columnComment  FROM SYS.dba_TAB_columns T,SYS.ALL_COL_COMMENTS S  WHERE  T.TABLE_NAME = S.TABLE_NAME  AND T.COLUMN_NAME = S.COLUMN_NAME   AND T.OWNER = '" + db + "' AND T.TABLE_NAME = '" + tb + "'");} else if (jdbcUrl.contains("mysql")) {int first = jdbcUrl.lastIndexOf("/") + 1;int last = jdbcUrl.indexOf("?");String dbName = jdbcUrl.substring(first, last);preparedStatement = conn.prepareStatement("select COLUMN_NAME as columnName,COLUMN_COMMENT as columnComment from information_schema.COLUMNS where table_name = '" + tableName + "' and table_schema = '" + dbName + "'");}/*****************************Mysql和Oracle数据源不同部分 End******************************/        ResultSet resultSet = preparedStatement.executeQuery();while (resultSet.next()) {HashMap<String, Object> map = new HashMap<>();String columnName = resultSet.getString("columnName");String columnComment = resultSet.getString("columnComment");map.put("columnName", columnName);map.put("columnComment", columnComment);list.add(map);}return list;} catch (Exception ex) {log.error("执行sql出现问题!", ex);return null;}}
}

2. 适配于Mysql数据源

package cn.stylefeng.guns.generator.core.util;import cn.stylefeng.guns.generator.modular.entity.DatabaseInfo;
import lombok.extern.slf4j.Slf4j;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** 数据库操作工具类** @author fengshuonan* @Date 2019/1/13 18:34*/
@Slf4j
public class DbUtil {/*** 查询某个数据库连接的所有表** @author fengshuonan* @Date 2019-05-04 20:30*/public static List<Map<String, Object>> selectTables(DatabaseInfo dbInfo) {ArrayList<Map<String, Object>> list = new ArrayList<>();try {Class.forName(dbInfo.getJdbcDriver());Connection conn = DriverManager.getConnection(dbInfo.getJdbcUrl(), dbInfo.getUserName(), dbInfo.getPassword());String jdbcUrl = dbInfo.getJdbcUrl();/*****************************Mysql数据源独有部分 Start******************************/int first = jdbcUrl.lastIndexOf("/") + 1;int last = jdbcUrl.indexOf("?");String dbName = jdbcUrl.substring(first, last);PreparedStatement preparedStatement = conn.prepareStatement("select TABLE_NAME as tableName,TABLE_COMMENT as tableComment from information_schema.`TABLES` where TABLE_SCHEMA = '" + dbName + "'");/*****************************Mysql数据源独有部分 End******************************/ResultSet resultSet = preparedStatement.executeQuery();while (resultSet.next()) {HashMap<String, Object> map = new HashMap<>();String tableName = resultSet.getString("tableName");String tableComment = resultSet.getString("tableComment");map.put("tableName", tableName);map.put("tableComment", tableComment);list.add(map);}return list;} catch (Exception ex) {log.error("执行sql出现问题!", ex);return null;}}/*** 查询某个表的所有字段** @author fengshuonan* @Date 2019-05-04 20:31*/public static List<Map<String, Object>> getTableFields(DatabaseInfo dbInfo, String tableName) {ArrayList<Map<String, Object>> list = new ArrayList<>();try {Class.forName(dbInfo.getJdbcDriver());Connection conn = DriverManager.getConnection(dbInfo.getJdbcUrl(), dbInfo.getUserName(), dbInfo.getPassword());String jdbcUrl = dbInfo.getJdbcUrl();/*****************************Mysql数据源独有部分 Start******************************/int first = jdbcUrl.lastIndexOf("/") + 1;int last = jdbcUrl.indexOf("?");String dbName = jdbcUrl.substring(first, last);PreparedStatement preparedStatement = conn.prepareStatement("select COLUMN_NAME as columnName,COLUMN_COMMENT as columnComment from information_schema.COLUMNS where table_name = '" + tableName + "' and table_schema = '" + dbName + "'");/*****************************Mysql数据源独有部分 End******************************/ResultSet resultSet = preparedStatement.executeQuery();while (resultSet.next()) {HashMap<String, Object> map = new HashMap<>();String columnName = resultSet.getString("columnName");String columnComment = resultSet.getString("columnComment");map.put("columnName", columnName);map.put("columnComment", columnComment);list.add(map);}return list;} catch (Exception ex) {log.error("执行sql出现问题!", ex);return null;}}
}

3. 适配Oeacle数据源

package cn.stylefeng.guns.generator.core.util;import cn.stylefeng.guns.generator.modular.entity.DatabaseInfo;
import lombok.extern.slf4j.Slf4j;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** 数据库操作工具类** @author fengshuonan* @Date 2019/1/13 18:34*/
@Slf4j
public class DbUtil {/*** 查询某个数据库连接的所有表** @author fengshuonan* @Date 2019-05-04 20:30*/public static List<Map<String, Object>> selectTables(DatabaseInfo dbInfo) {ArrayList<Map<String, Object>> list = new ArrayList<>();try {Class.forName(dbInfo.getJdbcDriver());Connection conn = DriverManager.getConnection(dbInfo.getJdbcUrl(), dbInfo.getUserName(), dbInfo.getPassword());String jdbcUrl = dbInfo.getJdbcUrl();/*****************************Oracle数据源独有部分 Start******************************/String dbName = dbInfo.getUserName();String db = dbName.toUpperCase();PreparedStatement preparedStatement = conn.prepareStatement("SELECT S.TABLE_NAME AS tableName,S.COMMENTS AS  tableComment  FROM SYS.dba_TAB_comments S  WHERE S.OWNER = '" + db + "'");/*****************************Oracle数据源独有部分 End******************************/ResultSet resultSet = preparedStatement.executeQuery();while (resultSet.next()) {HashMap<String, Object> map = new HashMap<>();String tableName = resultSet.getString("tableName");String tableComment = resultSet.getString("tableComment");map.put("tableName", tableName);map.put("tableComment", tableComment);list.add(map);}return list;} catch (Exception ex) {log.error("执行sql出现问题!", ex);return null;}}/*** 查询某个表的所有字段** @author fengshuonan* @Date 2019-05-04 20:31*/public static List<Map<String, Object>> getTableFields(DatabaseInfo dbInfo, String tableName) {ArrayList<Map<String, Object>> list = new ArrayList<>();try {Class.forName(dbInfo.getJdbcDriver());Connection conn = DriverManager.getConnection(dbInfo.getJdbcUrl(), dbInfo.getUserName(), dbInfo.getPassword());String jdbcUrl = dbInfo.getJdbcUrl();/*****************************Oracle数据源独有部分 Start******************************/String dbName = dbInfo.getUserName();String db = dbName.toUpperCase();String tb = tableName.toUpperCase();PreparedStatement preparedStatement = conn.prepareStatement("SELECT T.COLUMN_NAME  as columnName,S.COMMENTS as columnComment  FROM SYS.dba_TAB_columns T,SYS.ALL_COL_COMMENTS S  WHERE  T.TABLE_NAME = S.TABLE_NAME  AND T.COLUMN_NAME = S.COLUMN_NAME   AND T.OWNER = '" + db + "' AND T.TABLE_NAME = '" + tb + "'");/*****************************Oracle数据源独有部分 End******************************/ResultSet resultSet = preparedStatement.executeQuery();while (resultSet.next()) {HashMap<String, Object> map = new HashMap<>();String columnName = resultSet.getString("columnName");String columnComment = resultSet.getString("columnComment");map.put("columnName", columnName);map.put("columnComment", columnComment);list.add(map);}return list;} catch (Exception ex) {log.error("执行sql出现问题!", ex);return null;}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QString类型转换为bool类型

方法 直接上代码 QString str "12.345";QVariant onLineTemp str;bool isValue onLineTemp.toBool();

Spark精华问答 | Spark的计算方法是什么?

戳蓝字“CSDN云计算”关注我们哦&#xff01;Spark是一个针对超大数据集合的低延迟的集群分布式计算系统&#xff0c;比MapReducer快40倍左右&#xff0c;是hadoop的升级版本&#xff0c;Hadoop作为第一代产品使用HDFS&#xff0c;第二代加入了Cache来保存中间计算结果&#xf…

qt中创建控件布局以及删除原有布局和控件

引言 当根据数据来创建控件并布局时&#xff0c;如果数据更新&#xff0c;那么之前创建的控件便需要删除后重新创建布局。该文主要说明将原来的布局和控件删除&#xff0c;重新创建并布局。 示例 先看一下ui文件&#xff1a; 下面是实现代码&#xff1a; void StatusViewDi…

Spring精华问答 | Spring 能帮我们做什么?

Spring框架是一个开源的Java平台,它提供了非常容易,非常迅速地开发健壮的Java应用程序的全面的基础设施支持。今天就让我们一起来看看关于Spring的精华问答吧。1Q&#xff1a;什么是Spring框架&#xff1f;A&#xff1a;Spring框架是一个为Java应用程序的开发提供了综合、广泛的…

qt自定义控件的样式

引言 自定义控件创建后&#xff0c;有时需要设置样式&#xff0c;下面记录一下设置样式时需要注意的点。 注意 1.设置自定义控件的样式时&#xff0c;需要下面的代码&#xff1a; void paintEvent(QPaintEvent *event) {Q_UNUSED(event);QStyleOption opt;opt.init(this);Q…

linux 上传文件 rz命令 提示command not found 解决方法

-bash: rz: command not found rz命令没找到&#xff1f; 执行sz&#xff0c;同样也没找到。 安装lrzsz&#xff1a; yum -y install lrzsz现在就可以正常使用rz、sz命令上传、下载数据了。 使用方法&#xff1a; 上传文件 rz filename下载文件 sz filename

IoT与大数据 如何激发数字营销最大潜能?

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;译者&#xff1a;风车云马 物联网与大数据概述物联网(IOT)简单理解&#xff0c;除了电…

qt中生成含有中文的json文件,读取含有中文的json文件

引言 之前将变量保存并在本地生成json文件&#xff0c;由于其中含有中文&#xff0c;导致生成的json文件出现乱码&#xff0c;或者就是生成的json文件没有乱码&#xff0c;但是读取生成的json文件时出现乱码&#xff0c;不能正常解析json. 示例 运行效果&#xff1a; 下面是…

年初新立Flag,新华三解决方案部做了点儿啥?

戳蓝字“CSDN云计算”关注我们哦&#xff01;极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;人人都提及的数字化时代&#xff0c;企业不想方设法提升效率怎么行&#xff1f…

qt中判断文件是否存在

实现 判断一个文件是否存在 bool isExistSpecificFile(QString strPath) {if (QFile::exists(strPath)) {return true;}return false; }注意&#xff1a; 这里的路径strPath是指文件所在的绝对路径&#xff0c;即完整的文件路径。

Docker - 实战TLS加密通讯

使用说明 演示环境(centos7,docker17.06.0-ce) 创建一个文件夹 mkdir /sslcd /ssl创建ca密钥 openssl genrsa -aes256 -out ca-key.pem 4096创建ca证书 openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN*" -out ca.pem创建服务器私钥 open…

qt中拖动窗口widget

提要 继承与QDialog的窗口&#xff0c;窗口原本按住标题栏可以拖动窗口&#xff0c;但是设置了窗口的隐藏标题栏属性后&#xff0c;窗口不再能够拖动。或者继承于QWidget的窗体&#xff0c;不具有窗口拖动功能。 本文实现继承于窗口widget或者继承于QDialog隐藏窗口标题栏的窗…

idea gblfy常用快捷键

gblfy日常快捷键&#xff1a; 关键词说明idea中对应的操作CTRL左方向光标向左跳跃一个单词Editor Actions -> Move Caret to Previous WordCTRL右方向光标向右跳跃一个单词Editor Actions -> Move Caret to Next Wordmianmian方法输入main后按着(自动提示)alt/sout快速打…

qt实现窗口拖动的两种思路

提要 窗口按下鼠标不放拖动窗口移动&#xff0c;鼠标释放的时候&#xff0c;停止拖动。这个过程可以用两种方法来实现。 1.鼠标点击后&#xff0c;获取鼠标按下点的坐标和起初窗口左上角的坐标&#xff0c;用鼠标按下点的坐标减去鼠标左上角的坐标&#xff0c;求出这个固定值。…

Linux怎么取消ftp的匿名访问功能

编辑vsftpd.conf: vim /etc/vsftpd/vsftpd.conf修改anonymous_enableYES 为 NO 保存退出 重起服务生效: /etc/init.d/vsftpd restart

看华为生态大学 如何玩转人才生态?

戳蓝字“CSDN云计算”关注我们哦&#xff01;极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;从孔子兴私学开始&#xff0c;千百年来&#xff0c;中国人在私塾中开始或完成自…

银河麒麟通过命令行安装软件没有安装上

提要 安装软件时出现&#xff1a; nigulasinigulasi-virtual-machine:~$ dpkg -L fcitx-frontend-qt5 | grep .so dpkg-query: 软件包 fcitx-frontend-qt5 没有被安装 使用 dpkg --info ( dpkg-deb --info) 来检测打包好的文件&#xff0c; 还可以通过 dpkg --contents ( dpk…

Hadoop精华问答 | 关于Hadoop核心技术的精华问答

戳蓝字“CSDN云计算”关注我们哦&#xff01;随着科技时代的发展&#xff0c;大数据与云计算已势不可挡的架势席卷未来&#xff0c;不可否认&#xff0c;大数据时代已经来临&#xff0c;并将深刻地改变着我们的工作和生活。学习大数据技术&#xff0c;是时代的召唤&#xff0c;…

如何将本地代码推送至远程仓库

文章目录一、现在远程仓库创建仓库二、本地操作流程1. 用idea打开项目2. 选择需要打开项目3. 选择这个窗口打开或者用一个新的窗口打开都可以4. 导入成功的项目结构三、将本地仓库的代码推送远程仓库1. 初始化本地git仓库2. 将项目代码提交到暂存区3. 将暂存区的代码提交到本地…

qt不规则按钮样式在自适应分辨率时应该注意的图片缩放模式

提要 qt设置不规则按钮的样式&#xff0c;并要求不规则按钮能够适应不同的分辨率&#xff0c;分为同比例的分辨率&#xff0c;如16&#xff1a;9&#xff0c;也可以为不同比例的的分辨率&#xff0c;如之前为16&#xff1a;9&#xff0c;同时适应16&#xff1a;5的分辨率。在设…