尝试使用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;"
就行了。任何人都可以向我解释为什么只有在我尝试使用参数时才会发生错误?
答案 0 :(得分:3)
create-statement不是数据操作语句。参数仅允许在此类操作中使用。 create-statement是一个数据定义语句。
答案 1 :(得分:1)
我猜这个查询是以
执行的CREATE DATABASE "fancydb";
这是错误的。
答案 2 :(得分:1)
Data manipulation language 操作支持 Data definition language 操作的SqlCommand参数。
数据操作语言=
SELECT ... FROM ... WHERE ...
INSERT INTO ... VALUES ...
UPDATE ... SET ... WHERE ...
DELETE FROM ... WHERE ...
数据定义语言=
CREATE TABLE ...
DROP TABLE ... ;
ALTER TABLE ... ADD ... INTEGER;
答案 3 :(得分:0)
这有效:
cmd.CommandText = "exec ('CREATE DATABASE ' + @database)";
cmd.Parameters.AddWithValue("@database", restoreDB);
cmd.ExecuteNonQuery();