Java实现桌面快捷脚本--查MySQL数据

4 篇文章 0 订阅

一、场景说明

在工作中,数据库操作分了很多权限,比如,读写和只读权限,可能有些同事需要排查问题,临时需要查询线上数据库的数据,但我们的是读写权限,不能直接给他们用,而且又不能泄露密码给他们,两种方式,一种通过运维同事临时开一个只读账号,还有一种就是我们可以通过写一个程序,支持他们输入SQL查询,下面我们来实现一下第二种方式~

二、代码实现

我们以Java代码为例

1、引入mysql驱动包

因为没有使用到啥框架,所以我们首先需要引入mysql驱动包,下载地址downloads.mysql.com

2、具体代码实现

我们主要实现连接到MySQL数据库并执行用户输入的SQL查询,通过加载MySQL的JDBC驱动,创建一个到MySQL数据库的连接,然后创建一个Statement对象来执行SQL查询,并通过创建了一个Scanner对象来从控制台读取用户输入。

// mysql8.0以上版本com.mysql.jdbc.Driver 更换为 com.mysql.cj.jdbc.Driver
private static final String driver = "com.mysql.jdbc.Driver"; 
private static final String con_url = "jdbc:mysql://localhost:3306/test?useUnicode=true&useSSL=false&characterEncoding=utf8";
private static final String user_name = "root";
private static final String user_passward = "forlan";

// 驱动只需要加载一次,所以放在静态代码块里面
static {
	try {
		Class.forName(driver);
	} catch (ClassNotFoundException e) {
		e.printStackTrace();
	}
}

public static void main(String[] args) {
	ResultSet rs = null;
	try (Connection connection = DriverManager.getConnection(con_url, user_name, user_passward);
		 Statement stmt = connection.createStatement(); Scanner sc = new Scanner(System.in)) {
		while (true) {
			System.out.println("请输入要执行的sql:");
			String sql = sc.nextLine();
			StringBuilder sb = new StringBuilder();
			rs = stmt.executeQuery(sql);
			ResultSetMetaData metaData = rs.getMetaData();
			while (rs.next()) {
				for (int i = 0; i < metaData.getColumnCount(); i++) {
					String col_name = metaData.getColumnName(i + 1);// 获取列名
					sb.append(col_name).append("=").append(rs.getObject(col_name)).append(";");
				}
				sb.append("\n");
			}
			System.out.println(sb.toString());
		}
	} catch (Exception e) {
		System.out.println("执行失败,请联系管理员处理");
		e.printStackTrace();
	}finally {
		try {
			rs.close();
		} catch (SQLException throwables) {
			throwables.printStackTrace();
		}
	}
}

三、生成jar包

上面写完代码后,我们使用IntelliJ IDEA生成jar包,按照下面的步骤操作即可~

1、打开File>Project Structure

显示以下窗口,按图中的步骤操作
在这里插入图片描述

2、设置启动类

在下面窗口的Main Class中,选择我们前面编写的main方法所在类作为启动类,点击OK
在这里插入图片描述

3、打开Bulid>Build Artifacts,按图中窗口操作

鼠标放在“All Artifacts”上,会弹出“Action”窗口
在这里插入图片描述
点击Bulid,可以看到已经生成jar包了
在这里插入图片描述

4、对jar包进行反编译处理

这里需要对jar包进行反编译处理,防止我们的密码泄露

四、测试效果

假设我们的库表数据如下:

mysql> select * from forlan_class;
+----+------------+
| id | class_name |
+----+------------+
|  1 | 初级班     |
|  2 | 中级班     |
|  3 | 高级班     |
|  4 | 大师班     |
|  5 | 成神班     |
|  6 | 神仙班     |
+----+------------+

编写“bat”脚本文件,或者直接打开命令窗口执行“java -jar queryCode.jar”也OK,脚本内容也是一样的东西,只是方便我们快捷使用

java -jar queryCode.jar
pause

双击bat脚本,输入我们要查询的sql,看到返回结果就OK了
在这里插入图片描述

五、总结

其实最核心的还是我们编写的Java代码,接受用户输入的SQL,然后处理识别SQL,进行数据库查询,然后只需要把我们的程序打包成可执行的jar包,然后就可以直接通过命令执行了,上面的方式,有个前提条件,就是需要你的电脑有安装jdk。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Forlan

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值