在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() ...
随机推荐
- 【UVA11019】Matrix Matcher
Description Given an N × M matrix, your task is to find the number of occurences of an X × Y pattern ...
- Android中的音频处理------SoundPool,MediaRecorder,MediaPlayer以及RingStone总结
用Soundpool可以播一些短的反应速度要求高的声音, 比如游戏中的爆破声, 而Mediaplayer适合播放长点的. MediaRecorder主要用来录音. SoundPool载入音乐文件使用了 ...
- 【HDOJ】2386 Dart Challenge
纯粹母函数+滚动数组,水之. /* 2386 */ #include <iostream> #include <string> #include <map> #in ...
- 【POJ】1451 T9
DFS+字典树. #include <cstdio> #include <cstring> #include <cstdlib> typedef struct Tr ...
- 乐视手机1S正式发售,乐视商城官网抽风遭网友吐槽
乐视手机1S正式发售,乐视商城官网抽风遭网友吐槽 10月27日,乐视召开的新品发布会上正式推出千元金属新机乐1s,售价1099元.今天11月3日上午10:00,乐1s在乐视商城.京东商城首发开卖,现货 ...
- GPUImage实现过程
GPUImage就是一个函数的类库,用于对图片实现滤镜的效果. 下面是实现一个最简单的GPUImage的程序和讲解: 首先新建一个项目,导入GPUImage类库(导入过程在我的另一个博客里面有写). ...
- PHP函数:PHP_SELF
php_self是php的内置变量,记作$php_self,其作用是实现“页内跳转”.这里的页内跳转不同等于html的书签之类的跳转,而是php程序通过URL的尾参数的改变在同一个程序里提供不同的We ...
- 用mysqlslap压测mysql
参考文献:http://my.oschina.net/costaxu/blog/108568 上面网友详细的列举了用mysqlslap对mysql的压力测试结果,我也照葫芦画瓢试了一次,结果如下: 以 ...
- 深度学习Matlab DeepLearningToolBox 工具包最常见错误解决办法\
deeplearningtoolbox 下载链接github : https://github.com/rasmusbergpalm/DeepLearnToolbox,只需要解压到matlab当前工 ...
- MySQL 面试基础
相关:http://blog.csdn.net/u013252072/article/details/52912385 http://blog.csdn.net/zhangliang ...