C# 使用mysql命令创建mysql数据库

C# 使用mysql命令创建mysql数据库,c#,mysql,C#,Mysql,我在尝试使用mysql命令创建数据库时遇到问题。我使用的代码是 using (MySqlConnection con = connect_db()) { con.Open(); MySqlCommand cmd = new MySqlCommand("CREATE DATABASE @name;", con); cmd.Parameters.AddWithValue("@name", "fancydb"); try { cmd.Exe

我在尝试使用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();
}
当我试着运行这段代码时,我总是得到一个错误,说我有一个

“fancydb”附近的mysql语法错误


但是当我在命令中输入名称时,比如:
“createdatabasefacnydb;”
它就可以工作了。有人能解释一下为什么只有在我尝试使用参数时才会发生错误吗?

我猜查询是按如下方式执行的

CREATE DATABASE "fancydb";

这是错误的

create语句不是数据操作语句。仅在此类操作中允许使用参数。create语句是一个数据定义语句。

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();

不它将作为
创建数据库fancydb执行到目前为止,这是我见过的关于你能做什么和不能做什么的最简单答案。干杯