2010-07-30 30 views
0

我想爲ASP.NET中的jQGrid排序。爲此,我通過了sidx和sord以獲得列名和排序順序,但它給出錯誤「0附近的語法錯誤。」 聲明無法準備。「 我寫查詢這個select Image,CategoryName,Status,CategoryId from Category Order by {0} {1}ASP.NET爲jQuery Grid排序

回答

0

我不認爲這是有效的SQL查詢:

「選擇圖片,類別名稱,狀態,類別編號由{0} {1}類別訂購」

相反與實際名稱替換大括號和數字:

「選擇圖片,類別名稱,狀態,類別編號從類別排序按類別名稱,狀態」

迪克

0

如果你發佈一個代碼片段,你可以使用SELECT聲明附近的代碼片段。看起來你忘記了String.Format與「選擇圖像,類別名稱,狀態,來自類別順序{0} {1}的類別ID」,或者您沒有在jqGrid中定義默認排序列,也不在代碼中測試是否sidx是空的或null

如果您生成AdHoc SQL語句,則在測試輸入參數sidxsord時應非常小心。例如,對於sord"desc""asc"應該只允許兩個值。 sidx可以爲空或空值,也可以是允許排序的列表中的一個值(Image可能不允許進行排序)。在高級版本中,如果需要,可以允許sidx"CategoryName asc, Status"。在這種情況下,您應該解析sidx並驗證允許的語法。

最後,您應該考慮允許的列名稱情況以及列名稱中可能存在的特殊字符或使用列名稱中的保留名稱。如果將'['和']'放在列名上,您會收到更安全的SQL語句。