一、导入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命令的代码,特贴出来 String command = "ipconfig"; Runtime run = Runtime.getRuntime() ...

  9. dos命令下安装pip报错 不是内部命令

    在dos命令下: pip install requests 遇到这种情况一般是Python的环境变量没有设置好 解决方案一:设置环境变量 C:\Python\scripts   如图 是否有pytho ...

随机推荐

  1. kali-dmitry 域名信息收集

    DMirty:用来收集以下信息: 1. 端口扫描 2. whois主机IP和域名信息 3. 从Netcraft.com获取主机信息 4. 子域名 5. 域名中包含的邮件地址 1.使用方法: Deepm ...

  2. GitHub的.gitignore文件设置

    用Eclipse连接GitHub 在本地仓库(最上层文件夹)建立.gitignore文件后,所有子文件夹下对应文件或者文件夹在submit的时候就会被忽略. 我将Eclipse的workspace当作 ...

  3. smartforms客制页格式

    smartforms需要打印非A4纸时需要手动创建页格式:创建事务代码:spad, 操作的时候需要 把所有步骤都做一遍方可正常打印,不然只能停留在预览界面无法打印.

  4. WebApi异常

    WebApi异常处理解决方案   前言:上篇C#进阶系列——WebApi接口传参不再困惑:传参详解介绍了WebApi参数的传递,这篇来看看WebApi里面异常的处理.关于异常处理,作为程序员的我们肯定 ...

  5. 计算机程序的思维逻辑 (70) - 原子变量和CAS

    从本节开始,我们探讨Java并发工具包java.util.concurrent中的内容,本节先介绍最基本的原子变量及其背后的原理和思维. 原子变量 什么是原子变量?为什么需要它们呢? 在理解synch ...

  6. 3.STM32复位系统

    一.概念 复位: 使系统结束当前运行状态,重新开始运行,并根据复位种类,将系统的寄存器(特定的寄存器除外)恢复到默认状态. 二.复位的种类 1.系统复位 将除了系统后备区域寄存器(BKP)和时钟控制寄 ...

  7. ZYNQ学习之路1. Linux最小系统构建

    https://blog.csdn.net/u010580016/article/details/80430138?utm_source=blogxgwz1 开发环境:window10, vivado ...

  8. Motherboard Chipsets and the Memory Map.主板芯片组与内存映射

    原文标题:Motherboard Chipsets and the Memory Map 原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外 ...

  9. Global.asax的Application_BeginRequest实现url重写无后缀的代码

    本文为大家详细介绍下利用Global.asax的Application_BeginRequest 实现url重写其无后缀,具体核心代码如下,有需求的朋友可以参考下,希望对大家有所帮助 利用Global ...

  10. [UE4]C++静态局部变量

    void testFunc() { ; // this only runs ONCE, even on // subsequent calls to testFunc()! cout << ...