Implementieren Sie Paging in gespeicherten Prozeduren
Autor:Eve Cole
Aktualisierungszeit:2009-07-01 15:55:30
Ich bin kein sehr erfahrener Programmierer, daher werde ich während des Projekts auf viele Probleme stoßen. Die Verwendung von Paging in der Datenbank ist eines der Probleme, auf die ich während des Projekts gestoßen bin. Ich habe viele Informationen aus dem Internet überprüft, und es gibt viele Methoden. Ich denke jedoch, dass das Erstellen einer temporären Datentabelle die einfachste Methode ist. Als ich die Mitgliedschaftserweiterung durchführte, stellte ich fest, dass Microsoft sie auch auf diese Weise verwendet. Sie können einfach eine gespeicherte Mitgliedschaftsprozedur öffnen und einen Blick darauf werfen.
Es ist sinnlos, mehr zu sagen. Schauen Sie sich einfach den Code an und es wird klar sein, haha.
1CREATE PROCEDURE dbo.CreateSimple
2(
3 @PageIndex int,
4 @PageSize int
5)
6AS
7BEGINNEN
8 - Definieren Sie drei Variablen:
9 – @PageLowerBound: Die untere Grenze der abgerufenen Datensätze.
10 – @PageUpperBound: Die Obergrenze der abzurufenden Datensätze.
11 – @TotalRecords: Gibt die Gesamtzahl der Datensätze zurück, die hauptsächlich für Seitenberechnungen verwendet werden.
12 DECLARE @PageLowerBound int
13 DECLARE @PageUpperBound int
14 DECLARE @TotalRecords int
15
16 – Berechnen Sie die Werte der Ober- und Untergrenzen.
17 SET @PageLowerBound=@PageIndex * @PageSize
18 SET @PageUpperBound=@PageLowerBound+@PageSize-1
19
20 – Temporäre Tabelle erstellen:
21--IndexId ist die Kennung und erhöht sich automatisch um 1;
22--SimpleId wird durch die Datentabelle [Simple] ausgefüllt;
23 TABELLE ERSTELLEN #PageIndexForSimple
vierundzwanzig (
25 IndexId int Identity(0,1) NICHT NULL,
26 SimpleId int
27)
28 – Füllen der temporären Tabelle
29 INSERT INTO #PageIndexForSimple(SimpleId)
30 SELECT s.[SimpleId]
31 VON [Einfach] s
32 --WHERE-Bedingung und ODER BY-Anweisungen können hier hinzugefügt werden
33
34 – Ermitteln Sie die Gesamtzahl der Datensätze. Tatsächlich ist die Anzahl der betroffenen Zeilen die Gesamtzahl der Datensätze.
35 SELECT @TotalRecords=@@ROWCOUNT
36
37 – Holen Sie sich die Platte, die wir wollen.
38 SELECT s.*
39 FROM [Simple] s,#PageIndexForSimple p
40 WHERE s.[SimpleId]=p.[SimpleId]
41 AND p.[IndexId]>=@PageLowerBound
42 AND P.[IndexId]< =@PageUpperBound
43 ORDER BY s.[Einfach]
44
45 – Gibt die Gesamtzahl der Datensätze zurück.
46 RETUR @TotalRecords
47ENDE Sie können es aus den obigen Kommentaren verstehen. Haha, jetzt, wo ich es hier geschrieben habe, schreiben Sie auch den Code des Programms:
1Public List<Simple> GetSimple(int pageIndex,int pageIndex,out int totalRecords){
2 List<Simple> entity=new List<Simple>();
3 SqlParameter[]param=neuer SqlParameter[]{
4 neue SqlParameter("@PageIndex",SqlDbType.Int),
5 neue SqlParameter("@PageSize",SqlDbType.Int),
6 neue SqlParameter("@ReturnValue",SqlDbType.Int),
7};
8 param[0].Value=pageIndex;
9 param[1].Value=pageSize;
10 param[2].Direction = ParameterDirection.ReturnValue;
11 SqlDataReader read=SqlHelper.ExecuteReader(CommandType.StoredProcedure, "GetSimple", param);
12 While(reader.Read()){
13 entity.Add(GetSimpleEntity(reader))
14}
15 Reader.Close();
16 versuchen{
17 totalRecords=(int)param[2].Value;
18 }fangen{}
19 Rückgabeeinheit;
20} Einige der oben genannten Funktionen wurden von mir selbst geschrieben:
SqlHelper-Klasse: Vereinfachte Datenbankabfrageklasse.
GetSimpleEntity (SqlDataReader-Leser): Da der Erwerb grundlegender Entitätsklassen häufig in Projekten verwendet wird, wird eine separate private Funktion zur Wiederverwendung geschrieben;
Es ist zu beachten, dass beim Abrufen der Gesamtzahl der Datensätze der Typ DbNull sein kann, was zu einem Fehler führt.
http://www.cnblogs.com/xdotnet/archive/2006/09/19/procedure_for_paging_select.html