ExecuteNonQuery() выдает неверный синтаксис рядом с ключевым словом «Пользователь»

Я начал изучать С# на прошлой неделе, и теперь у меня проблемы с оператором INSERT sql. Я использовал следующий код, затем я расскажу вам, что происходит.

private void AddNewUserToDataBase(User user)
{
    string commandText = "INSERT INTO User (firstName,lastName,adress,town,favoriteCurrency) " +
                         "VALUES (@firstName,@lastName,@adress,@town,@favoriteCurrency)";

    using (SqlConnection connection = new SqlConnection(global::Laboratoire1.Properties.Settings.Default.Database1ConnectionString))
    {
        using (SqlCommand command = new SqlCommand())
        {
            command.Connection = connection;
            command.CommandText = commandText;
            command.CommandType = CommandType.Text;

            // je passe les paramètres ici pour éviter les erreurs au niveau du string commande 

            command.Parameters.Add(new SqlParameter("@firstName", user.getFirstName())); // autre façon plus générale
            command.Parameters.Add(new SqlParameter("@lastName", user.getLastName()));
            command.Parameters.Add(new SqlParameter("@adress", user.getAdress()));
            command.Parameters.Add(new SqlParameter("@town", user.getTown()));
            command.Parameters.Add(new SqlParameter("@favoriteCurrency", user.getFavoriteCurrencyId()));

            try
            {
                connection.Open();
                command.ExecuteNonQuery();
                connection.Close();
            }
            catch (SqlException ex)
            {
                MessageBox.Show("Une erreur s'est produite.");
            }
        }
    }
}

Моя программа не падает, и появляется окно сообщения об исключении. Я пытаюсь понять свою ошибку и изменить синтаксис моей команды.Параметры.Добавить, но это все равно не работает :/.


После изменения блока catch для отображения исключения вместо его проглатывания он выдает:

Неверный синтаксис рядом с ключевым словом "Пользователь"


person bengous    schedule 04.10.2014    source источник
comment
Всякий раз, когда у вас есть исключение, исключение сообщит вам об ошибке. Однако вы проглотили это и просто показали общее сообщение. Вы должны проверить значение ex и, в идеале, не проглотить его и либо записать в файл, либо показать исключение .ToString() в окне сообщения, либо и то, и другое.   -  person Kirk Woll    schedule 05.10.2014
comment
Хорошо, спасибо за совет, я этого не знал :). Итак, проблема в следующем: неправильный синтаксис рядом с ключевым словом «Пользователь». Я этого не понимаю: у пользователя моей таблицы есть все эти параметры и автоматически увеличивающийся сгенерированный идентификатор. Я использую varchars и int для поля FavoriteCurrency.   -  person bengous    schedule 05.10.2014


Ответы (2)



Измените имя таблицы с «Пользователь» на другое, потому что «Пользователь» — это зарезервированное ключевое слово, которое нельзя использовать снова, поэтому, если вы используете любое другое имя для таблицы, код будет работать нормально, например: —

create table User1(firstName varchar(20),lastName varchar(20),adress varchar(20),town varchar(20),favoriteCurrency int)
person p0ison c0de    schedule 04.10.2014