使用mysql命令创建mysql数据库。

4
我在尝试使用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语法错误,但是当我像这样在命令中输入名称:"CREATE DATABASE facnydb;"它可以工作。有人能解释一下为什么只有在我尝试使用参数时才会出现错误吗?
4个回答

3

create语句不是数据操作语句,因此它不允许使用参数。创建语句是一种数据定义语句。


1
我猜测该查询被执行为:


CREATE DATABASE "fancydb";

这是错误的。

不行!它会执行为 CREATE DATABASE fancydb; - Soner Gönül

1
SqlCommand参数支持数据操作语言,而不是数据定义语言操作。

数据操作语言 =

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

数据定义语言 =
CREATE TABLE ... 
DROP TABLE ... ;
ALTER TABLE ... ADD ... INTEGER;

1
到目前为止,我看到的关于你能做什么和不能做什么的最简单的答案。干杯! - Noctis

0

这个有效:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接