在 MySQL 中,如何创建存储过程来创建数据库本身,然后使用 JDBC 从 Java 调用该过程?

问题描述 投票:0回答:1

我正在开发一个Java应用程序,需要在MySQL中编写一个单独的存储过程来通过查询创建数据库本身:

CREATE DATABASE IF NOT EXISTS db_name;

我试过这个:

DELIMITER //

CREATE PROCEDURE create_database_and_dish_table()
BEGIN
    CREATE DATABASE IF NOT EXISTS restaurant_db;
    USE restaurant_db;
    CREATE TABLE dish (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(100) NOT NULL,
        description VARCHAR(255),
        price DECIMAL(10, 2),
        category VARCHAR(50)
    );
END //

但是,在 MySQL Workbench 中,我收到错误,因为我没有指定所需的数据库名称。 那么我该怎么做呢?之后,如何从 Java JDBC 应用程序连接到 MySQL 服务器而不在连接字符串中提及数据库名称,然后调用所需的存储创建过程?

java sql mysql swing jdbc
1个回答
0
投票

这是一个“先有鸡还是先有蛋”的问题。

在创建模式之前,您无法在

restaurant_db
模式中创建过程。

以此类推:在任何操作系统中,在创建文件夹之前都无法在该文件夹内创建文件。您必须首先创建该文件夹。

同样,您无法创建一个创建数据库的存储过程,以便该存储过程驻留在该数据库中。

存储过程可以驻留在另一个数据库中,并且它可以创建新数据库并在该新数据库中创建表。

© www.soinside.com 2019 - 2024. All rights reserved.