2014-02-08 20 views
1

我是C#和SQL Server的新手。我創建了一個SQL Server數據庫和一個C#應用程序。 C#應用程序工作得很好,當我用這個語句檢索所有記錄:SQL Server 2012 - 如何在單個頁面上顯示特定數量的記錄?

SELEC * FROM tableName 

和w當我用這個語句

SELEC TOP 10 * FROM tableName 

僅前10個結果顯示。

現在我想顯示下面的10個結果,當我點擊一個Next按鈕時。我嘗試過並在網上搜索,但沒有找到解決方案。請讓我知道我該怎麼做。我需要確切的SQL查詢,它可以檢索從行M到行N的結果。

在此先感謝。

+0

搜索分頁。 – Mihai

+0

-1用於標記mysql –

回答

1

@Muhammad Suhail你應該使用和搜索尋呼。 只需創建一個存儲過程,當點擊下一個按鈕時,將一個pagenumber和pageSize傳遞給一個sql存儲過程。以下示例是在sql server存儲過程中創建分頁的最佳方法。

只有你應該通過參數@pageSize@pageNumber
這個腳本是用NorthWind分貝
只要改變@pageNumber,看看你的網頁

DECLARE @pageNumber int=4 
DECLARE @pageSize int=3 

    SELECT EmployeeID,LastName,FirstName 
    FROM(
     SELECT ROW_NUMBER() OVER (ORDER BY EmployeeID) AS Row, 
     EmployeeID, 
     LastName, 
     FirstName 
     FROM dbo.Employees 
    ) AS EmployeRecords 
    WHERE 
    Row BETWEEN (@pageSize*(@pageNumber-1)+1) AND @pageNumber * @pageSize 

@pageSize = 3和@pageNumber=1

enter image description here

@pageSize = 3和@pageNumber=2

enter image description here

等等.....................

+0

感謝您的詳細解答。我使用的是SQL 2012,並且它有一個新功能,即OFFSET ... FETCH,這是我幾分鐘前發現的。我認爲這比這個漫長的過程更好?你對此有何評論? –

+0

我不是仍然使用SQL 2012,如果你發現一些好的方式,最好..謝謝。但以上是分頁的最佳方式,如果沒有新功能...就像你提到的OFFSET FETCH等謝謝分享我會研究這些功能.. –

0

內部查詢添加RowIndex,它是每行按行排序的自動編號,通過columnToOrderBy進行排序,外部查詢只是通過傳遞開始和結束行來使用該新行來篩選出不希望在頁面上的行值的BETWEEN子句:即第一行的數量,最後一個(含)

select * from (
    select ROW_NUMBER() OVER(order by columnToOrderBy) as RowIndex 
      , * 
    from TableInQuestion) t 
where RowIndex Between 10 and 19 
0

退房討論的數字,它有你需要的所有信息:

How to return a page of results from SQL?

A沒有選擇將開始使用LINQ。然後你可以使用這樣的事情:

Where(query your data).Skip(x).Take(y);

這種做法也是在上述線程討論。

相關問題