ExecuteNonQuery()抛出“关键字’User’附近的语法不正确”

我上周开始学习C#,现在我遇到了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."); } } } } 

我的程序不会崩溃,并显示exception消息框。 我试图理解我的错误并更改我的command.Parameters.Add的语法,但它仍然不起作用:/。


更改catch块以显示exception而不是吞下它后,它会抛出:

关键字“用户”附近的语法不正确

你有一个名为“User”的表,但这是一个保留的关键字 。

您可以重命名该表,或在引用它时将其括在括号中:

 string commandText = "INSERT INTO [User] (firstName ... 

将表名从“User”更改为其他名称,因为User是一个不能再次使用的保留关键字,因此如果您对表使用任何其他名称,代码将起到很好的作用: –

 create table User1(firstName varchar(20),lastName varchar(20),adress varchar(20),town varchar(20),favoriteCurrency int) 
Interesting Posts