关键字"User"附近的语法不正确. 错误不断弹出



搜索了不同的解决方案,但没有任何效果。我有相同的代码来注册用户并且工作正常,我在此代码中找不到问题

SqlConnection sql = new SqlConnection(@"Data Source=(LocalDB) Security=True;Connect Timeout=30");
sql.Open();
cmd = new SqlCommand("INSERT INTO [MenuItem](User, Order1, Order2, Order3, VALUES(@User, @Order1, 
@Order2, @Order3", sql);
cmd.Parameters.AddWithValue("@User", label20.Text);
cmd.Parameters.AddWithValue("@Order1", checkBox1.Text);
cmd.Parameters.AddWithValue("@Order2", checkBox2.Text);
cmd.Parameters.AddWithValue("@Order3", checkBox3.Text);
cmd.ExecuteNonQuery();
sql.Dispose();

USER是 T-SQL 中的保留关键字;避免将其用于对象名称。如果这样做,则必须分隔标识它。([User](。

您的SQL中还缺少右括号,并且有一个额外的逗号:...Order3) VALUES ...

我也会引用用户这个词:

cmd = new SqlCommand(@"INSERT INTO [MenuItem]([User], Order1, Order2, Order3) 
VALUES(@User, @Order1, @Order2, @Order3)", sql);

通常建议避免将列与保留字(几乎任何在SSMS中突出显示的内容(调用,因为这意味着您必须将名称括在方括号中,而且它相当丑陋

您的错误在语法中,因为您缺少一些)

请看一下这个查询示例:

INSERT INTO Production.UnitMeasure (Name, UnitMeasureCode,  
ModifiedDate)  
VALUES (N'Square Yards', N'Y2', GETDATE());  

(请参阅其他插入示例(

您的错误仅在查询的语法中

这是 SQL 查询的正确语法:

INSERT INTO [dbo].[MenuItem] ([User], [Order1], [Order2], [Order3]) VALUES (@User, @Order1, @Order2, @Order3)

只是一个小小的建议:

即使你可以避免提到"dbo",使用它,否则你的数据库将不得不搜索它。

相关内容

最新更新