C# WinForm插入URL参数报错:关键字‘user’附近语法不正确
问题原因及解决办法
这个报错的核心原因很明确:user是SQL Server的保留关键字,你直接在INSERT语句里把它作为列名使用时,SQL解析器会误以为你在调用这个关键字的功能,而不是指代你的数据表列,因此抛出了语法错误。
解决方法非常简单,只需要把列名user用方括号[]包裹起来,明确告诉SQL这是一个列名而非关键字。修改后的SQL语句如下:
String query = @"INSERT INTO dbo.PrivateUsers([user]) VALUES(@user);";
完整的修正后代码示例:
SqlConnection con = new SqlConnection(DataBase.GetConString()); con.Open(); String query = @"INSERT INTO dbo.PrivateUsers([user]) VALUES(@user);"; SqlCommand cmd = new SqlCommand(query, con); cmd.Parameters.AddWithValue("@user", url); int count = cmd.ExecuteNonQuery(); con.Close();
另外给你个实用建议:后续设计数据库表结构时,尽量避免使用SQL的保留关键字作为表名、列名或其他对象名,这样能从根源减少类似语法问题,让代码更易读也更稳定。
内容的提问来源于stack exchange,提问作者YosiFZ




