试图运行该代码:SqlConnection的错误:附近有语法错误)'
commandObject.CommandText = string.Format("EXEC spUpdateAvailPlaces {0}, {1}, {2})", updatedAvailability, clocationID, cWeekNumber);
并保持收到此错误消息:
Incorrect syntax near ')'
试图运行该代码:SqlConnection的错误:附近有语法错误)'
commandObject.CommandText = string.Format("EXEC spUpdateAvailPlaces {0}, {1}, {2})", updatedAvailability, clocationID, cWeekNumber);
并保持收到此错误消息:
Incorrect syntax near ')'
正如上面的答案所述,在查询结束时给出错误的附加“)”,您可以通过删除它们来解决问题,我不会认为String.Format将不会是构建sql的好方案查询。所以在这里我建议你使用参数化查询,所以你可以指定传递值的数据类型。这会帮助你:
using (SqlCommand cmd = new SqlCommand("spUpdateAvailPlaces", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@updatedAvailability", SqlDbType.VarChar).Value = updatedAvailability;
cmd.Parameters.Add("@clocationID", SqlDbType.VarChar).Value = clocationID;
cmd.Parameters.Add("@cWeekNumber", SqlDbType.VarChar).Value = cWeekNumber;
con.Open();
cmd.ExecuteNonQuery();
}
使用正确的命令类型而不是使用'EXEC'粘贴:) –
更不用说参数化查询的好处了。 – Rawheiser
您在您的SQL字符串末尾有一个括号,将其删除:
commandObject.CommandText = string.Format("EXEC spUpdateAvailPlaces {0}, {1}, {2}", updatedAvailability, clocationID, cWeekNumber);
您{2}
后增加了一个额外)
。
尝试: commandObject.CommandText = string.Format("EXEC spUpdateAvailPlaces {0}, {1}, {2}", updatedAvailability, clocationID, cWeekNumber);
一个额外)
您现在有一个额外的右括号为您的格式字符串的结尾:
"EXEC spUpdateAvailPlaces {0}, {1}, {2})"
应该是:
"EXEC spUpdateAvailPlaces {0}, {1}, {2}"
考虑使用参数
值得一提的是,如果你正在建设一个查询并执行它,你可以考虑使用参数代替,可避免任何形式的像这样的语法问题(通常有助于防止SQL注入,因为您使用的是存储过程,所以在这里不应该担心这个问题)。
// Set your query
commandObject.CommandText = "spUpdateAvailPlaces @availability, @location, @week";
// Ensure you are executing it as a stored procedure (important)
commandObject.CommandType = CommandType.StoredProcedure;
// Add your parameters
commandObject.Parameters.AddWithValue("@availability",updatedAvailability);
commandObject.Parameters.AddWithValue("@location",locationId);
commandObject.Parameters.AddWithValue("@week",cWeekNumber);
在这件事情上设置参数将允许.NET确定他们应该如何使用它们。此外,将CommandType
属性设置为CommandType.StoredProcedure
将连接其他一些内容(即,指示这不是查询并通过EXEC
实际执行存储过程)。
你有一个右括号但不是开头的括号。脱掉'''并切换到参数而不是注入文本值。 –