在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() ...
随机推荐
- Java FutureTask理解
尊敬原创作者,转载请注明出处: http://blog.csdn.net/gemmem/article/details/8956703 FutureTask是为了弥补Thread的不足而设计的,它可以 ...
- [LeetCode#116]Fraction to Recurring Decimal
Problem: Given two integers representing the numerator and denominator of a fraction, return the fra ...
- 怒刷BZOJ记录(二)1038~10xx
我实在是太弱了...不滚粗只能刷BZOJ了...这里来记录每天刷了什么题吧. 2015-8-13: 正式开始! 1030[JSOI2007]文本生成器 | ...
- Linux Eclipse代码提示功能设置(Java & C/C++)
最近在Linux下开发,由于长期使用Visual Studio 2010,对代码提示功能情有独钟,现在在Linux下,使用Eclipse做开发,当然免不了怀念Visual Studio强悍的代码提示, ...
- 单位分配的IP地址和电脑主机绑定了,我想用设置一个无线路由器,让我的笔记本电脑和手机都能上网?
单位分配的IP地址和电脑主机绑定了,我想用设置一个无线路由器,让我的笔记本电脑和手机都能上网? 配一个无线路由器就可以实现,将电脑IP配置成自动获取,找条网线一头插路由LAN口(路由器上有标明 ...
- page-object使用(3)---元素嵌套
很可能我们要定位的元素位于其他的元素里面,所有的元素都有一个*_element方法需找元素自身的上下文.例如,如果我想找一个unordered_list嵌套在一个div里面,可以这么做: div(:e ...
- Mac 系统显示和隐藏文件的方法
1. 代码法: 显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏Mac隐藏文件的命令:defau ...
- iOS动态管理AutoLayout的约束NSLayoutConstraint
除了使用Storyboard之外,也可以使用使用代码的方式,动态的向指定的UIView,添加约束. 例如有两个UILabel:someLabel,otherLabel 首先用代码实例化,两个控件 se ...
- ACM1024动态规划
#include <cstdio> #include <algorithm> #define FI(a, b, c) for(int a = (b); a <= (c); ...
- [转]关于strtok和strtok_r函数的深度研究
在linux环境下,字符串分割的函数中,大家比较常用的是strtok函数,这个函数用处很大,但也有一些问题,以下将深度挖掘一下这个函数的用法,原理,实现,其次,该函数是不可再入函数,但是在linux ...