用c参数化语言创建mysql数据库

gywdnpxw  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(336)

我的代码有一个错误:“您的sql语法有一个错误;在第1行的“mysqldatabase”附近,检查与您的mysql服务器版本对应的手册,以获取要使用的正确语法

string connectionString = string.Format("SERVER = {0}; Port = {1}; User = {2}; Password = {3}", server, port, username, password);
MySqlConnection conn = new MySqlConnection(connectionString);
MySqlCommand cmd;
try
{
    conn.Open();
    string createDBCommand = "CREATE DATABASE IF NOT EXISTS @database";
    cmd = new MySqlCommand(createDBCommand, conn);
    cmd.Parameters.AddWithValue("@database", database);
    cmd.ExecuteNonQuery();
    conn.Close();
}

这是在executenonquery()语句中产生错误的代码。数据库是从class.properties.default值提交的值。当前是字符串“mysqldatabase”
我目前使用的是MySQLServer5.7,使用的create语句与文档中的示例类似,只是使用了一个参数。

anhgbhbe

anhgbhbe1#

“您的sql语法有错误;在第1行的“mysqldatabase”附近,检查与您的mysql服务器版本对应的手册,以获取要使用的正确语法
注意,这些不是mysqldatabase的双引号,而是两个单引号。这给了我们一个重要的提示。发生错误的语句的子字符串在错误消息中用单引号括起来。也就是说,子字符串读取'mysqldatabase',另一对单引号在该子字符串中。
在dbms看来,您的查询

CREATE DATABASE IF NOT EXISTS 'MySQLDatabase'

这里不允许单引号。不过,如果我们讨论的是字符串形式的值,他们是对的。
参数化查询在替换对象名(在ddl语句中)时不能正常工作,它们不是用来替换对象名的。在这里,您必须自己将名称连接到查询的字符串。再加上检查数据是否正常。

相关问题