在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指 ...
- java中如何实现全局变量
有时一个项目中会多处涉及到路径,当你把这个项目移植到别的电脑上时就要一一修改这些路径,过程十分繁琐,所以一个全局变量在这时是必不可少的. 遗憾的是java等oo语言并没有全局变量,这怎么办呢?下面介绍 ...
- Android开源项目发现--- 安全篇(持续更新)
SQLCipher Sqlite加密工具 项目地址:https://github.com/sqlcipher/sqlcipher 帮助文档:http://sqlcipher.net/sqlcipher ...
- Android listView scroll 恢复滚动位置
相信大家尝试过许多方法恢复滚动位置,本人也找了许多方法,唯有这个方法好用,下面把代码贴出来 声明两个变量 private int mPosition; private int lvChildTop; ...
- guava function and predicate 函数式编程
@Test public void function(){ List<String> list = Lists.newArrayList("1","2&quo ...
- 企业门户(Portal)项目实施方略与开发指南
<企业门户(Portal)项目实施方略与开发指南> 基本信息 作者: 郑文平 丛书名: 企业大型应用集成丛书 出版社:电子工业出版社 ISBN:9787121211843 上架时间: ...
- 使用m2eclipse搭建Web项目
这篇文章已经指导好了:http://www.cnblogs.com/quanyongan/archive/2013/04/21/3033838.html
- Bluetooth LE(低功耗蓝牙) - 第四部分
回顾 在本系列前几篇文章中我们完成了BLE设备的发现 , 为我们的app通过BLE显示从TI SensorTag设备中获取到环境温度和湿度的工作打下了基础.在这篇文章中我们将着眼于连接到我们所发现的S ...
- 【转】VMware Workstation 11 永久激活码key 非注册机
原文网址:http://www.landiannews.com/archives/12565.html 昨天我们发布了<跨越式提升:VMware Workstation 11 发布 附下载地址& ...
- (转)MVC 路由
URL路由系统通过对请求地址进行解析从而得到以目标Controller名称为核心的路由数据.Url路由系统最初是为了实现请求url与物理文件路径分离而建立的,MVC的Url Route是将Url地址与 ...