使用mysql命令创建mysql数据库

本文关键字:mysql 数据库 创建 命令 使用 | 更新日期: 2023-09-27 18:15:24

在尝试使用mysql命令创建数据库时遇到问题。我使用的代码是;

using (MySqlConnection con = connect_db())
{
    con.Open();
    MySqlCommand cmd = new MySqlCommand("CREATE DATABASE @name;", con);
    cmd.Parameters.AddWithValue("@name", "fancydb");
    try
    {
        cmd.ExecuteNonQuery();
    }
    catch (Exception exc)
    {                   
        return;
    }
    cmd.Dispose();
    con.Close();
    con.Dispose();
}

当我尝试运行这段代码时,我总是得到一个错误,说我有一个

mysql语法错误"fancydb"

,但当我把名字放在命令,如:"CREATE DATABASE facnydb;"它工作。有人能向我解释为什么只有当我尝试使用参数时才会发生错误吗?

使用mysql命令创建mysql数据库

create-statement不是数据操作语句。只有在这类操作中才允许使用参数。create语句是一个数据定义语句。

我猜这个查询是作为

执行的
CREATE DATABASE "fancydb";

是错误的。

SqlCommand 数据操作语言操作不支持数据定义语言操作。

数据操作语言=

SELECT ... FROM ... WHERE ...
INSERT INTO ... VALUES ...
UPDATE ... SET ... WHERE ...
DELETE FROM ... WHERE ...

数据定义语言=

CREATE TABLE ... 
DROP TABLE ... ;
ALTER TABLE ... ADD ... INTEGER;

这行得通:

cmd.CommandText = "exec ('CREATE DATABASE ' + @database)";
cmd.Parameters.AddWithValue("@database", restoreDB);
cmd.ExecuteNonQuery();