SqlExecuteCommand语法Near =

时间:2013-12-12 21:50:52

标签: c# sql sql-server asp.net-mvc-4

我有这个方法:

public int GetPreferredRoomID(String roomCategory)
{
   int RoomId;
   return RoomId = db.Database.ExecuteSqlCommand("SELECT RoomId FROM dbo.Rooms WHERE RoomCategory = " + roomCategory);
}

但是我收到一个错误,说错误的语法接近=

2 个答案:

答案 0 :(得分:3)

您无法为变量赋值并将其返回一行。你需要两个陈述。您还必须在撇号中包装文本列。

RoomId = db.Database.ExecuteSqlCommand("SELECT RoomId FROM dbo.Rooms WHERE RoomCategory = '" + roomCategory + "'"); 
return RoomId;

然而,看起来好像你对sql-injection开放了。改为使用参数化查询。

答案 1 :(得分:0)

在SQL语句中,您需要为String值添加单引号。

正确的方法是在roomCategory

之前和之后添加单引号

这是正确的答案。

public int GetPreferredRoomID(String roomCategory)
{
   int RoomId;
   return RoomId = db.Database.ExecuteSqlCommand("SELECT RoomId FROM dbo.Rooms WHERE RoomCategory = '" + roomCategory +"'");
}