【问题标题】:what is the syntax error in this SQL update query in asp.net c#? [closed]asp.net c# 中此 SQL 更新查询中的语法错误是什么? [关闭]
【发布时间】:2025-12-04 19:25:01
【问题描述】:

我在动态创建的表的简单更新查询中遇到错误,只是无法理解这里的错误是什么..

c#代码:

cmd2 = new SqlCommand("UPDATE " + tname + "SET ans=@ans, sans=@sans, chk=@chk WHERE qno=@qno", con99);
            cmd2.Parameters.AddWithValue("@ans", ans);
            cmd2.Parameters.AddWithValue("@sans", sans);
            cmd2.Parameters.AddWithValue("@chk", chk);
            cmd2.Parameters.AddWithValue("@qno", qno);
            cmd2.ExecuteNonQuery(); //error showing here in vstudio

错误:

“System.Data.SqlClient.SqlException”类型的异常发生在 System.Data.dll 但未在用户代码中处理 附加 信息:“ans”附近的语法不正确

【问题讨论】:

  • 错字," SET ..前缺少空格
  • 我还建议将变量 tname 放在方括号之间以避免将来出现语法错误,如果您有一个包含某种保留字或其他无效系统标识符的表跨度>
  • @AlexK。更正了现在我收到错误为:附加信息:')'附近的语法不正确
  • 删除随机最后一个)
  • @AlexK。成功了!

标签: c# sql asp.net sql-server executenonquery


【解决方案1】:

至少有一个问题是缺少空格。于SET之前需要一个空格。

cmd2 = new SqlCommand("UPDATE " + tname + " SET ans=@ans, sans=@sans, chk=@chk WHERE qno=@qno)", con99);

您不能将表名作为参数放入。令人高兴的是,您确实将其他值作为参数放入。

你应该小心使用AddWithValue()。它可能会导致打字错误。使用正确的类型显式添加会更安全。

【讨论】:

    【解决方案2】:

    您在表名后缺少一个空格,并且您有一个不必要的右括号:

    "UPDATE " + tname + " SET ans=@ans, sans=@sans, chk=@chk WHERE qno=@qno"
    

    【讨论】:

      【解决方案3】:

      您的查询末尾有一个杂散的右括号,以及其他答案中提到的缺失空格:

      "UPDATE " + tname + "SET ans=@ans, sans=@sans, chk=@chk WHERE qno=@qno)"
      

      应该是:

      "UPDATE " + tname + " SET ans=@ans, sans=@sans, chk=@chk WHERE qno=@qno"
      

      【讨论】:

        最近更新 更多