通过桌面脚本,直接用界面操查看Mysql数据,方便没有权限用户使用

一、场景说明

在项目中,可能有些同事需要查询线上数据库的数据,但又不能泄露密码给他们,手写一个程序方便他们查询。

二、Java代码

需要引入mysql驱动包:downloads.mysql.com

// 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包

参考博客 三、生成jar包

注意:这里需要对jar包进行反编译处理

四、桌面启动脚本

编写“查询Sql.bat”文件

java -jar selectSql.jar

pause

五、测试

数据库表数据如下

mysql> Select * FROM forlan_class;

+----+------------+

| id | class_name |

+----+------------+

| 1 | 初级班 |

| 2 | 中级班 |

| 3 | 高级班 |

| 4 | 大师班 |

| 5 | 成神班 |

| 6 | 神仙班 |

+----+------------+

双击设置.bat,输入我们要查询的sql,返回结果

查看原文