当我将参数传递给MySqlParameter时,为什么会出现“SQL语法中有错误”?

时间:2011-06-18 12:34:36

标签: c# .net mysql sql

我的代码

后面出现异常
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''MachineSimulator'' 

var sqlParams = new[]
                                            {
                                                new MySqlParameter("@MachineSimulatorDb",GlobalVariables.MachineSimulatorDb),
                                                new MySqlParameter("@CAMXMassagesTable" ,GlobalVariables.CamxmassagesTable)
                                            };

            using (var conn = new MySqlConnection(GlobalVariables.ConnectionString))
            {
                conn.Open();
                using(var command = new MySqlCommand())
                {
                    command.Connection = conn;
                    command.Parameters.AddRange(sqlParams);

                    command.CommandText = "CREATE DATABASE IF NOT EXISTS @MachineSimulatorDb;";

                    command.ExecuteNonQuery();


                }


            }

知道那里有什么问题吗?

谢谢

2 个答案:

答案 0 :(得分:3)

MySQL可能不允许您将参数传递给create database。尝试:

command.CommandText = string.Format("CREATE DATABASE IF NOT EXISTS `{0}`",  
    GlobalVariables.MachineSimulatorDb);

如果您使用的变量来自usafe源,您应该知道SQL注入的危险。

答案 1 :(得分:0)

当我使用MySqlParameter时,它正在使用?字符,而不是@字符。这可能是你的问题;例如:

new MySqlParameter("?MachineSimulatorDb");

但是Andomar可能是正确的,你不能使用MySqlParameter来提供新数据库的名称。