在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日志性能
在任何系统中,日志都是非常重要的组成部分,它是反映系统运行情况的重要依据,也是排查问题时的必要线索.绝大多数人都认可日志的重要性,但是又有多少人仔细想过该怎么打日志,日志对性能的影响究竟有多大呢?今天 ...
- 【POJ1330】Nearest Common Ancestors(树链剖分求LCA)
Description A rooted tree is a well-known data structure in computer science and engineering. An exa ...
- java学习面向对象之抽象类
什么是抽象类,之所以说抽象就是具体的反义词喽~抽象离我们最近的距离也就是初中的时候学过的美术课,抽象画派.拿一桶画彩就这么往画布上一泼,那就是抽象.那么java世界当中什么是抽象呢?我们再拿动物还有狗 ...
- iis7 发布mvc3 遇到的HTTP错误 403.14-Forbidden Web 服务器被配置为不列出此目录的内容及Login on failed for "IIS APPPOOL\ASP.NET v4.0"问题
问题1: 发布mvc3报错:403.14-Forbidden Web 服务器被配置为不列出此目录的内容 折腾了半天,提示里面的解决方法是: 如果不希望启用目录浏览,请确保配置了默认文档并且该文件存在. ...
- js键盘控制DIV移动
<style type="text/css"> html,body{overflow:hidden;}body{margin:0;padding:0;}pre{colo ...
- php5.4下安装ECshop出现错误的解决办法
转:http://www.programmernote.com/?p=65 1.安装是会提示 Warning: date_default_timezone_get(): It is not safe ...
- rspec学习01
1.安装rspec 2.基本构造 rspec用关键字describe和it,所以我们可以象正常会话一样去表达一个想法. describe方法创建了一个用例组,在describe所在的代码块里,你可以用 ...
- HDOJ 1312题Red and Black
Red and Black Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- 安装完出现Deprecated: Function ereg_replace() is deprecated in
php5.3说明 先不要用php5.3吧,毕竟目前版本要修改这个工作量太大,而且可能会有很多未知错误,这只能在下一版全部改用perl的正则了,都不明白php官方发 什么神经,此外不支持应该是直接屏 ...
- margin设置为负数
1.为负margin“平反” 我们在CSS中都会使用margin,但将margin设置成负数,那可能就不大好处理了.在网页设计中,人们对负margin用法的态度大相径庭,有的人非常喜欢,而有的人则认为 ...