使用参数化的C#创建MYSQL数据库

我的代码有错误:“您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以找到在第1行的“ MySQLDatabase”附近使用正确的语法”


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()语句中产生错误的代码。database是来自class.Properties.Default值的值。并且当前是字符串“ MySQLDatabase”


我当前正在使用MySQL服务器5.7,并且正在使用与文档中的示例类似的create语句,除了我正在使用参数这一事实之外。


一只甜甜圈
浏览 251回答 1
1回答

湖上湖

“您的SQL语法有错误;请在与MySQL服务器版本相对应的手册中找到在第1行的“ MySQLDatabase”附近使用的正确语法”注意,这些不是围绕MySQLDatabase的双引号,而是两个单引号。这在这里给出了重要的提示。发生错误的语句的子字符串用错误消息中的单引号引起来。也就是说,子字符串读取为“ MySQLDatabase”,另一对单引号位于该子字符串中。正如DBMS所看到的,您的查询看起来像CREATE DATABASE IF NOT EXISTS 'MySQLDatabase'并且此处不允许使用单引号。如果我们讨论字符串文字形式的值,那将是正确的。参数化查询只是不能正确地替换对象名称(在DDL语句中),它们并不是为此目的而设计的。在这里,您必须自己将名称连接到查询的字符串。并添加检查,以确保数据是合理的。
打开App,查看更多内容
随时随地看视频慕课网APP