无法找到错误(字符串''后面的未闭合引号。)

时间:2012-10-13 06:40:08

标签: c# sql-server-2008

代码段:

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

我在哪里错过报价?

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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();
 }

答案 2 :(得分:0)

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