Почему при передаче параметров в MySqlParameter появляется сообщение «У вас ошибка в синтаксисе SQL»? - PullRequest
0 голосов
/ 18 июня 2011

Я получаю следующее исключение с моим кодом

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 ]

3 голосов
/ 18 июня 2011

MySQL, вероятно, не позволяет передавать параметр в create database.Попробуйте:

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

Если переменные, которые вы используете, получены из удобного источника, вы должны знать об опасности SQL-инъекции.

0 голосов
/ 18 июня 2011

Когда я использовал MySqlParameter, он работал с? символ, а не с символом @. Это может быть вашей проблемой здесь; например:

new MySqlParameter("?MachineSimulatorDb");

Но Андомар, вероятно, прав, что вы не можете использовать MySqlParameter для подачи имени новой базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...