2013-05-07 4 views
1

Я пытался передать переменное значение в качестве SQL-запроса с использованием параметров следующим образом:Использование параметризованных запроса для занесения DataList

SELECT TOP 5 * 
FROM Events 
WHERE EID NOT IN (SELECT TOP @limit EID FROM Events ORDER BY EID) 

Для нахождения записей после первых п строк, указанных значению параметр @limit.

E.g. если я укажу значение 10, тогда запрос возвращает строки 6-10.

Прямо сейчас, что я делаю это

string str = "SELECT TOP 5 * FROM Events WHERE EID NOT IN (SELECT TOP @limit EID FROM Events ORDER BY EID)" 

SqlCommand cmd=new SqlCommand(str,con); // con is the connection string 

cmd.Parameters.AddWithValue("limit", value); 

SqlDataAdapter sda= new SqlDataAdapter(cmd); 
DataSet ds=new DataSet(); 
sda.Fill(ds); 

return ds; 

Набор данных ds затем привязывается к Datalist.

В настоящее время выдается ошибка говоря

"неправильный синтаксис около @limit"

Что является (являются) неправильно с кодом ..?

ответ

6

Вытягивая TOP n с помощью параметра вы должны заключить параметр в скобках:

string str= "SELECT TOP 5 * FROM Events WHERE EID NOT IN (SELECT TOP (@limit) EID FROM Events ORDER BY EID)" 
+0

+1 большой, я не знаю, что – Steve

+0

вау ..! теперь он отлично работает .. Большое спасибо :) –

Смежные вопросы