在Java控制台模拟dos命令下操作MySQL
一、导入mysql的驱动:“com.mysql.jdbc.Driver”, 必须将mysql的驱动 包(jar文件)导入到本工程中。
Class.forName("com.mysql.jdbc.Driver");
二、由DriverManager驱动的管理类对象去获得Connection,在此之前需要先导入mysql的驱动包(或者驱动类)。
Connection conn = DriverManager.getConnection(url, userName, userPassword);
三、由Connection对象,获得执行增删改的sql语句的状态对象Statement
Statement stmt = conn.createStatement();
四、执行增删改查。
主要代码:
1、获得连接对象
/** * * @return:返回获得的连接对象 * @throws SQLException * @throws ClassNotFoundException */ public static Connection getConn(String database, String user, String password) throws ClassNotFoundException { Class.forName("com.mysql.jdbc.Driver"); Connection conn = null; try { conn = DriverManager.getConnection(url + database, user, password); System.out.println("Database changed"); } catch (SQLException e) { System.out.println(e.getMessage()); } return conn; }
2、执行查询语句返回查询结果
public static ArrayList<String[]> queryDB(String sql) throws ClassNotFoundException { ArrayList<String[]> list = null; try { list = new ArrayList<String[]>(); ResultSet result = statement.executeQuery(sql); ResultSetMetaData rsd = result.getMetaData(); num = rsd.getColumnCount(); String[] columnName = new String[num]; for (int i = 1; i <= num; i++) { columnName[i - 1] = rsd.getColumnName(i); queryLen[i - 1] = Math.max(queryLen[i - 1], columnName[i - 1].length()); } list.add(columnName); while (result.next()) { int index = 0; String[] string = new String[num]; for (int i = 1; i <= num; i++) { string[i - 1] = String.valueOf(result.getObject(i)); queryLen[index] = Math.max(queryLen[index], string[i - 1].length()); index++; } list.add(string); } } catch (SQLException e) { System.out.println(e.getMessage()); } return list; }
3、格式化输出
public static void main(String[] args) throws SQLException, ClassNotFoundException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Connection conn = null; while (true) { System.out.print(">"); String command = br.readLine(); if (command.equals("mysql -u root -p")) { System.out.print("Enter password:"); String password = br.readLine(); System.out.print("mysql>"); String database = br.readLine(); if (database.split(" ")[0].equals("use")) { conn = getConn(database.split(" ")[1], "root", password); if (conn == null) continue; } break; } } statement = conn.createStatement(); while (true) { System.out.print("\nmysql>"); String sql = br.readLine(); sql = sql.replace(";", ""); if (sql.trim().equals("quit")) { break; } else if (sql.trim().startsWith("select")) { ArrayList<String[]> list = queryDB(sql); for (int i = 0; i < list.size(); i++) { if (0 == i || 1 == i) { System.out.print("|"); for (int j = 0; j < list.get(i).length; j++) { for (int a = 0; a < queryLen[j]; a++) { System.out.print("-"); } System.out.print("|"); } System.out.println(); } for (int j = 0; j < list.get(i).length; j++) { System.out.print("|" + list.get(i)[j]); for (int k = list.get(i)[j].length(); k < queryLen[j]; k++) { System.out.print(" "); } } System.out.println("|"); if (i == list.size() - 1) { System.out.print("|"); for (int j = 0; j < list.get(i).length; j++) { for (int a = 0; a < queryLen[j]; a++) { System.out.print("-"); } System.out.print("|"); } System.out.println(); } } } else { updateDB(sql); } } }
运行测试:
在Java控制台模拟dos命令下操作MySQL的更多相关文章
- DOS命令行操作MySQL数据库中文乱码问题解决
我们在 dos 命令行操作中文时,会报错 ’); ERROR (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 原因:因为 ...
- DOS命令行操作MySQL常用命令
平时用可视化界面用惯了,如果紧急排查问题,没有安装可视化工具的话,只能通过命令来看了. 以备不时之需,我们要熟悉一下命令行操作MySQL. 打开DOS命令窗口:WIN + R 输入cmd,回车 然后输 ...
- Java在DOS命令下的运行及其API文档制作过程
该文档主要描述java程序在DOS命令下的运行,以及一些常用的命令 常用DOS命令: d: 回车 盘符切换 dir(directory):列出当前目录下的文件以及文件夹 md (make direct ...
- DOS命令下输入:java Hello 出现以下几种结果可能的原因:
DOS命令下输入:java Hello 出现以下结果:Bad command or the file name 没有这个命令或文件名 原因可能是没有成功安装jdk或者没有配置好jdk 的环境变量,或者 ...
- Dos命令下目录操作
Dos命令下目录操作 1.cd 操作 显示当前目录名或改变当前目录 cd [盘符][路径] 进入指定盘符下的目录 cd [..] ...
- Java程序设计的DOS命令基础
Java程序设计的DOS命令基础 用户使用操作系统和软件有两种方式:命令行界面(Command Line Interface,CLI)和图形界面(Graphical User Interface,GU ...
- 安装Oracle之后在DOS命令下不能使用sqlplus命令启动Oracle?
就像完成安装JDK后需要给系统配置环境变量JAVA_HOME和PATH,以便让系统认识在JDK里面的Javac命令.同样的,安装Oracle也需要这么一个过程.在正常情况下安装Oracle时系统安装程 ...
- Java预科:DOS命令及电脑快捷键
Java预科:DOS命令及电脑快捷键 1.快捷键 常用快捷键 a/t +f4关闭窗口 cmd窗口打开快捷方式 1.开始+系统+命令提示符 2.win+r 输入cmd 3.在任意文件夹下面,按住shif ...
- [转载]java调用本地dos命令
在社区看到java调用本地dos命令的代码,特贴出来 String command = "ipconfig"; Runtime run = Runtime.getRuntime() ...
随机推荐
- unity 基础之InputManager
unity 基础之InputManager 说一下unity中的InputManager,先截个图 其中Axes指的是有几个轴向!Size指的是有几个轴,改变Size可以添加或者减少轴! Name指 ...
- 改善 ASP.NET MVC 代码库的 5 点建议
MVC,建议 刚刚检查完支持工单中的一些代码,笔者想针对 ASP.NET MVC 应用的改进写一些建议.这些内容仍在笔者脑海中,愿与各位一同分享.若你已使用 MVC 一段时间,那么以下内容可能并不新鲜 ...
- Guava的一些总结
guava是java API蛋糕上的冰激凌(精华). 源码包的简单说明: com.google.common.annotations:普通注解类型. com.google.common.base: ...
- PHP,JAVA,JAVASCRIPT的正则表达式里的反斜杠\的不通之处
我的博客:www.while0.com 首先,java和javascript强制字符串输出\必须用\转义,所以要输出一个\,java和javascript都要两个\: java代码: String s ...
- [BZOJ2173]整数的lqp拆分
[题目描述] lqp在为出题而烦恼,他完全没有头绪,好烦啊… 他首先想到了整数拆分.整数拆分是个很有趣的问题.给你一个正整数N,对于N的一个整数拆分就是满足任意m>0,a1 ,a2 ,a3…am ...
- BZOJ3036: 绿豆蛙的归宿&Wikioi2488:绿豆蛙的归宿
3036: 绿豆蛙的归宿 Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 108 Solved: 73[Submit][Status] Descript ...
- Spark RCFile的那些“坑”
RCFile在平台的应用场景中多数用于存储需要“长期留存”的数据文件,在我们的实践过程中,RCFile的数据压缩比通常可以达到8 : 1或者10 : 1,特别适用于存储用户通过Hive(MapRedu ...
- C/S结构与B/S结构的特点分析
C/S结构与B/S结构的特点分析 为了区别于传统的C/S模式,才特意将其称为B/S模式.认识到这些结构的特征,对于系统的选型而言是很关键的. 1.系统的性能 在系统的性能方面,B/S占有优势的是其异地 ...
- zoj 2734 Exchange Cards【dfs+剪枝】
Exchange Cards Time Limit: 2 Seconds Memory Limit: 65536 KB As a basketball fan, Mike is also f ...
- [转]C++ map容器用法
C++ map的基本操作和使用 原文地址:http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html Map是c++的一个标准容器,她提供了很好一对一的关 ...