Не удается вставить строку с параметром

#c# #sql-server #visual-studio #sql-server-2012

#c# #sql-сервер #visual-studio #sql-server-2012

Вопрос:

Я пытаюсь использовать следующий код:

 try
{
    SqlConnection conn = new SqlConnection("server=ARSLAN-LAPI\SQLEXPRESS;"  
                         "Trusted_Connection=yes;"  
                         "database=OTTS; "  
                         "connection timeout=30");
    conn.Open();
    String name=UserName.Text;
    String pwd=Password.Text;
    String query = "INSERT INTO dbo.user (username,password) 
                     VALUES(@username,@password)";
    SqlCommand command = new SqlCommand(query, conn);
    command.Parameters.Add("@username",name);
    command.Parameters.Add("@password",pwd);
    command.ExecuteNonQuery();
    conn.Close();
    ErrorMessage.Text="Well done!";
}
catch(SqlException ex)
{
     ErrorMessage.Text="You failed!"   ex.Message;
}
  

Получено сообщение об ошибке, которое

You failed!Incorrect syntax near the keyword 'user'.

Пожалуйста, направьте меня..

Ответ №1:

User — это зарезервированное ключевое слово, я настоятельно рекомендую изменить название этого поля на что-то другое.
Однако, если вы все еще настаиваете на его использовании, не забывайте заключать его в квадратные скобки каждый раз, когда оно вам понадобится.

 string query = "INSERT INTO [dbo].[user] (username,password) VALUES(@username,@password)";
  

Ответ №2:

Попробуйте это:

 INSERT INTO dbo.[user] (username,password)   VALUES(@username,@password)
  

Ответ №3:

попробуйте что-то вроде этого,

 SqlCommand command = new SqlCommand(query, conn);
command.Parameters.Add("@username",SqlDbType.VarChar,50).Value = name;
command.Parameters.Add("@password",SqlDbType.VarChar,50).Value= pwd;
command.ExecuteNonQuery();