0

代码片段:

dbCommand = new SqlCommand("sp_EVENT_UPATE '" 
    + currentEvent.EventID + "','" + currentEvent.Description + "','" 
    + currentEvent.DisciplineID + "'", dbConnection);

我在哪里缺少报价?

4

3 回答 3

2

未闭合的引号很可能在您的变量之一中。此外,像这样构建查询会使您容易受到 sql 注入攻击。

查看使用 SqlCommand.Parameters 列表添加您的值。

像这样的东西

dbCommand = new SqlCommand("sp_EVENT_UPATE @eventId, @description, @disciplineID", dbConnection);

dbCommand.Parameters.AddWithValue("@peventId",currentEvent.EventID);
dbCommand.Parameters.AddWithValue("@description",currentEvent.Description);
dbCommand.Parameters.AddWithValue("@disciplineID",currentEvent.DisciplineID);
于 2012-10-13T06:43:07.777 回答
2

使用parameters而不是hardcoded字符串。

using(dbCommand = new SqlCommand())
{
  dbCommand.CommandText="sp_EVENT_UPATE";
  dbCommand.Connection=dbConnection;
  dbCommand.CommandType=CommandType.StoredProcedure;
  dbCommand.Parameters.AddWithValue("@EventID",currentEvent.EventID);
  ....
  dbConnection.Open();
  dbCommand.ExecuteNonQuery();
  dbConnection.Close();
 }
于 2012-10-13T06:46:22.000 回答
0

您的 currentEvent.Description 可能具有破坏该 SQL 语句语法的单引号。您应该始终使用准备好的语句/命令来应对这种情况。

于 2012-10-13T06:43:18.657 回答