【JDBC】使用JDBC方式创建删除数据库          返回主页

通常情况下,我们在使用jdbc和数据库进行交互时,默认已经建立一个数据库,但是这样总有其局限性,如果在应用中要跨数据库访问或者动态建立一个数据库时,这样的方式便不能满足我们的要求。

本文即是要实现对数据库的动态建立和删除,使得对DB的访问更加灵活。

【复习】JDBC建立与数据库连接

首先复习一下建立数据库连接的过程。

  1. 加载对应数据库驱动

    Class.forName("com.mysql.jdbc.Driver");
    
  2. 通过驱动管理器获取连接,(取得数据库url,用户名及密码)

    connection = DriverManager.getConnection(url, username, password);
    

基于上述步骤便建立了到数据库的连接,之后便是使用statement对象执行sql语句,resultSet对象获取具体数据

动态创建数据库(以MySQL为例)

回到本文的重点,要实现动态创建数据库,有一个重要前提,就是在加载数据库驱动之后获取到MySQL默认数据库“mysql”的连接。

关于默认数据库“mysql”

引用脚本之家的解释:

这个是mysql的核心数据库,类似于sql server中的master表,
主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。
不可以删除,如果对mysql不是很了解,也不要轻易修改这个数据库里面的表信息。

具体步骤

public class createDB {

    static Connection connection;
    static Statement statement;
    static ResultSet resultSet;
    private static String url = "jdbc:mysql://localhost/mysql";

    public static void main(String[] args) throws SQLException {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(url, "xxxx", "xxxx");
            statement = connection.createStatement();
            String createDB = "create database test1";
            statement.executeUpdate(createDB);

            //String dropDB = "drop database test1";
            //statement.executeUpdate(dropDB);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

    }
}

解析

  1. 可以看到,在建立连接时先与mysql建立了连接

    private static String url = "jdbc:mysql://localhost/mysql"; 
    ...
    connection = DriverManager.getConnection(url, "xxxx", "xxxx");
    
  2. 之后再使用statement对象执行update()方法提交建表语句“create database test1”

  3. 删除数据库同理,只不过执行的语句为“drop database 数据库名”

运行结果

在CLI下执行show databases命令,显示如下结果

mysql> show databases;
+-------------------------+
| Database                |
+-------------------------+
| information_schema      |
| db_callingtheroll       |
| db_librarysys           |
| db_myenterprise         |
| demo                    |
| jobhunterandcompany     |
| mysql                   |
| performance_schema      |
| sakila                  |
| simple_service_book     |
| studentmanagementsystem |
| test                    |
| test1                   |
| world                   |
+-------------------------+
14 rows in set (0.00 sec)

可以看到,数据库“test1”建立成功。