asp.net c# 中的这个 SQL 更新查询的语法错误是什么?

what is the syntax error in this SQL update query in asp.net c#?

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

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

错误:

An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user code Additional information: Incorrect syntax near 'ans'

至少缺少一个问题 spaces。 SET前需要一个space。

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

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

使用AddWithValue()请谨慎。它可能会导致打字错误。使用正确的类型显式添加更安全。

您在 table 名称后缺少 space,并且您有一个不必要的右括号:

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

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

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

应该是:

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