Ошибка SQL: неправильный синтаксис рядом с ключевым словом "пользователь"

Я использую SQL для вставки данных в файл базы данных SQL с помощью C# следующим образом.

    String cs = System.Configuration.ConfigurationManager.ConnectionStrings["connection1"].ConnectionString;
    SqlConnection conn = new SqlConnection(cs);
    String sql = "INSERT INTO User (login, password, status) " + 
            "VALUES (@login, @password, @status)";
    SqlCommand comm = new SqlCommand(sql, conn);

    comm.Parameters.Add("@login", System.Data.SqlDbType.VarChar);
    comm.Parameters.Add("@password", System.Data.SqlDbType.VarChar);
    comm.Parameters.Add("@status", System.Data.SqlDbType.Bit);

    try
    {
        conn.Open();
        Console.WriteLine(conn.ToString());
        comm.ExecuteNonQuery();
        conn.Close();
        return true;
    }
    catch (Exception ex)
    {
        throw (ex);
    }
    finally
    {
        conn.Close();
    }

Я получаю следующую ошибку при выполнении команды.

неверный синтаксис рядом с ключевым словом "Пользователь".: Вставить в пользователя (логин, пароль, статус) значения (@login, @ password, @status)

Как я могу решить это, пожалуйста?

edit: добавлены пропущенные значения параметров..

    comm.Parameters["@login"].Value = this.Username;
    comm.Parameters["@password"].Value = this._password;
    comm.Parameters["@status"].Value = this.Status;

3 ответов


User является зарезервированным ключевым словом, так что вы должны использовать квадратные скобки, чтобы сделать его явным, что вы имеете в виду объект С именем "пользователь", т. е. использовать [User] вместо User.


пользователь является t-sql зарезервированное ключевое слово. Заключив его в квадратные скобки, можно решить эту проблему. Например, вставить в [User]


выполнить запрос к базе данных. Ключевое слово declare sql можно использовать для определения переменных и их значений. Если вам нужно выяснить значения переменных, установите точку останова в conn.Откройте, а затем используйте окно locals, чтобы увидеть, какие значения вы передаете. Другим инструментом в вашем распоряжении является SQL Profiler. Можно запустить трассировку и запустить программу. Вы должны иметь возможность видеть запрос как выполненный в профиле после запуска опубликованного кода.

все это должно помочь вам понять, что не так с вашим sql, когда исключение не предоставляет достаточной информации.

среда SQL Server Management Studio должна была выделить ключевое слово User в инструкции sql, легко показав, что вам нужны скобки вокруг него, например: [User]