2016-07-04 5 views
0

Ich habe einen Razor Code:Fehler bei FETCH NEXT-

"SELECT * FROM Cat ORDER BY [NameCat] ASC OFFSET @0 ROWS FETCH NEXT @1 ROWS ONLY"; 

Aber es funktioniert nicht.

Der Fehler ist:

Die Anzahl der Leitungen für die Zählparameter Leitungen des TOP oder FETCH Klausel muss eine ganze Zahl sein.

FETCH ist eine ganze Zahl! @0 und @1 sind ganze Zahlen.

Wo liege ich falsch?

komplette Code:

@{ 
    try 
    { 
     Thread.Sleep(200); 
     var recCount = db.QueryValue("SELECT COUNT(*) FROM Cat"); 
     var db = Database.Open(App.connDatabase); 
     var strQuery = "SELECT * FROM Cat ORDER BY [NameCat] ASC OFFSET @0 ROWS FETCH NEXT @1 ROWS ONLY";" 
     var cat = db.Query(strQuery, Request["jtStartIndex"], Request["jtPageSize"]).ToList(); 

     var json = Json.Encode(new { Result = "OK", Records = cat, TotalRecordCount = recCount }); 
     Response.Write(json); 
    } 
    catch (Exception ex) 
    { 
     var json = Json.Encode(new { Result = "ERROR", Message = ex.Message }); 
     Response.Write(json); 
    } 
} 

jtStartIndex und jtPageSize sind int!

+0

Nichts mit 'Rasierer' zu tun. Dies ist eine 'sql' Frage. Wie führen Sie diese Abfrage aus? Übergeben Sie Parameter vom Typ "int" an den Server? Kannst du deinen Code zeigen? – Kaf

+0

'Request []' gibt 'strings' zurück, du musst sie in den' int' Typ umwandeln. – Kaf

+0

Ok danke für die Antwort Kaf ... aber wie kann ich? –

Antwort

0

Ihre Parameter Request["jtStartIndex"] und Request["jtPageSize"] müssen zu int geparst werden, um sie als integer zu übergeben. Wenn Sie sie ohne Analyse verwenden, werden sie als strings übergeben. Versuchen Sie es so:

var cat = db.Query(strQuery, int.Parse(Request["jtStartIndex"]), int.Parse(Request["jtPageSize"]).ToList();