在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() ...
随机推荐
- 关于用xercesImpl包解析xml文件遇中文报错问题
今天在运行项目时报错: Caused by: org.apache.xerces.impl.io.MalformedByteSequenceException: 3 字节 UTF-8 序列的字节 3 ...
- Spring MVC之@RequestMapping 详解(转)
引言: 前段时间项目中用到了REST风格来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没有加任何注解),查看了提交方式为application/j ...
- Android开源项目发现--- 工具类图片缓存篇(持续更新)
1. Android-Universal-Image-Loader 图片缓存 目前使用最广泛的图片缓存,支持主流图片缓存的绝大多数特性. 项目地址:https://github.com/nostra1 ...
- [cocos2d] 调用动画方法
利用texture atlases生成动画 中讲到如何添加动画,如果想要调用已添加的动画怎么办? 在1.0.1版本以前的cocos2d添加动画的方法为: CCAnimation *anim = [CC ...
- IIS7 上传 下载文件大小限制的设置
IIS7 上传 下载文件大小限制的设置 本文来自IISBOY网 一.找到修改大小的配置文件和配置节点 本文来自IISBOY网 打开你系统盘(我是C盘),找到 C:\Windows\System32\i ...
- [Struts] Hello World Demo
Struts 是一个基于 MVC 模式的框架.Struts 2 并不是 Struts 的下一个版本,几乎重写了 Struts.本文中提到的 Struts 均指 Struts 2. Model, 负责维 ...
- spark-streaming-kafka包源码分析
转载请注明原创地址 http://www.cnblogs.com/dongxiao-yang/p/5443789.html 最近由于使用sparkstreaming的同学需要对接到部门内部的的kafk ...
- c# 字符串转化成声音 分类: C# 2014-09-24 12:20 316人阅读 评论(0) 收藏
说明: (1)支持Window 7系统,但是xp系统智能朗读英文和数字: (2)添加引用 Interop.SpeechLib.dll; (3)使用时调用StringToVoice(str)即可. us ...
- 用Excel完成专业化数据统计、分析工作
使用Excel可以完成很多专业软件才能完成的数据统计.分析工作,比如:直方图.相关系数.协方差.各种概率分布.抽样与动态模拟.总体均值判断,均值推断.线性.非线性回归.多元回归分析.时间序列等.本专题 ...
- Datagridview 实现二维表头和行合并【转载】
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...