2013-12-12 4 views
0

У меня есть этот метод:SqlExecuteCommand Некорректное Синтаксис Near =

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

Но я получаю ошибку, которая говорит, что неправильный синтаксис около =

+0

'вернуть db.Database.ExecuteSqlCommand ("SELECT RoomID FROM dbo.Rooms WHERE RoomCategory =" + roomCategory);' –

ответ

3

Вы не можете присвоить значение переменной и вернуть его в одной строке. Вам нужны два утверждения. Вы также должны обертывать текстовые столбцы в апострофы.

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

Однако, это выглядит, как если бы вы открыты для sql-injection. Вместо этого используйте параметризованные запросы.

+0

Может хотите добавить одинарные кавычки 'roomCategory', так как это строка – Dan

0

В операциях SQL вам нужно добавить одинарные кавычки для значений String.

правильный способ сделать это просто добавить одинарную кавычку до и после roomCategory

здесь есть правильный ответ.

public int GetPreferredRoomID(String roomCategory) 
{ 
    int RoomId; 
    return RoomId = db.Database.ExecuteSqlCommand("SELECT RoomId FROM dbo.Rooms WHERE RoomCategory = '" + roomCategory +"'"); 
} 
Смежные вопросы