一、导入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的更多相关文章

  1. DOS命令行操作MySQL数据库中文乱码问题解决

    我们在 dos 命令行操作中文时,会报错 ’); ERROR (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 原因:因为 ...

  2. DOS命令行操作MySQL常用命令

    平时用可视化界面用惯了,如果紧急排查问题,没有安装可视化工具的话,只能通过命令来看了. 以备不时之需,我们要熟悉一下命令行操作MySQL. 打开DOS命令窗口:WIN + R 输入cmd,回车 然后输 ...

  3. Java在DOS命令下的运行及其API文档制作过程

    该文档主要描述java程序在DOS命令下的运行,以及一些常用的命令 常用DOS命令: d: 回车 盘符切换 dir(directory):列出当前目录下的文件以及文件夹 md (make direct ...

  4. DOS命令下输入:java Hello 出现以下几种结果可能的原因:

    DOS命令下输入:java Hello 出现以下结果:Bad command or the file name 没有这个命令或文件名 原因可能是没有成功安装jdk或者没有配置好jdk 的环境变量,或者 ...

  5. Dos命令下目录操作

    Dos命令下目录操作 1.cd 操作 显示当前目录名或改变当前目录 cd [盘符][路径]                      进入指定盘符下的目录 cd [..]               ...

  6. Java程序设计的DOS命令基础

    Java程序设计的DOS命令基础 用户使用操作系统和软件有两种方式:命令行界面(Command Line Interface,CLI)和图形界面(Graphical User Interface,GU ...

  7. 安装Oracle之后在DOS命令下不能使用sqlplus命令启动Oracle?

    就像完成安装JDK后需要给系统配置环境变量JAVA_HOME和PATH,以便让系统认识在JDK里面的Javac命令.同样的,安装Oracle也需要这么一个过程.在正常情况下安装Oracle时系统安装程 ...

  8. Java预科:DOS命令及电脑快捷键

    Java预科:DOS命令及电脑快捷键 1.快捷键 常用快捷键 a/t +f4关闭窗口 cmd窗口打开快捷方式 1.开始+系统+命令提示符 2.win+r 输入cmd 3.在任意文件夹下面,按住shif ...

  9. [转载]java调用本地dos命令

    在社区看到java调用本地dos命令的代码,特贴出来 String command = "ipconfig"; Runtime run = Runtime.getRuntime() ...

随机推荐

  1. 关于用xercesImpl包解析xml文件遇中文报错问题

    今天在运行项目时报错: Caused by: org.apache.xerces.impl.io.MalformedByteSequenceException: 3 字节 UTF-8 序列的字节 3 ...

  2. Spring MVC之@RequestMapping 详解(转)

    引言: 前段时间项目中用到了REST风格来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没有加任何注解),查看了提交方式为application/j ...

  3. Android开源项目发现--- 工具类图片缓存篇(持续更新)

    1. Android-Universal-Image-Loader 图片缓存 目前使用最广泛的图片缓存,支持主流图片缓存的绝大多数特性. 项目地址:https://github.com/nostra1 ...

  4. [cocos2d] 调用动画方法

    利用texture atlases生成动画 中讲到如何添加动画,如果想要调用已添加的动画怎么办? 在1.0.1版本以前的cocos2d添加动画的方法为: CCAnimation *anim = [CC ...

  5. IIS7 上传 下载文件大小限制的设置

    IIS7 上传 下载文件大小限制的设置 本文来自IISBOY网 一.找到修改大小的配置文件和配置节点 本文来自IISBOY网 打开你系统盘(我是C盘),找到 C:\Windows\System32\i ...

  6. [Struts] Hello World Demo

    Struts 是一个基于 MVC 模式的框架.Struts 2 并不是 Struts 的下一个版本,几乎重写了 Struts.本文中提到的 Struts 均指 Struts 2. Model, 负责维 ...

  7. spark-streaming-kafka包源码分析

    转载请注明原创地址 http://www.cnblogs.com/dongxiao-yang/p/5443789.html 最近由于使用sparkstreaming的同学需要对接到部门内部的的kafk ...

  8. c# 字符串转化成声音 分类: C# 2014-09-24 12:20 316人阅读 评论(0) 收藏

    说明: (1)支持Window 7系统,但是xp系统智能朗读英文和数字: (2)添加引用 Interop.SpeechLib.dll; (3)使用时调用StringToVoice(str)即可. us ...

  9. 用Excel完成专业化数据统计、分析工作

    使用Excel可以完成很多专业软件才能完成的数据统计.分析工作,比如:直方图.相关系数.协方差.各种概率分布.抽样与动态模拟.总体均值判断,均值推断.线性.非线性回归.多元回归分析.时间序列等.本专题 ...

  10. Datagridview 实现二维表头和行合并【转载】

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...