Prüfen Sie, ob es der Letzte Datensatz in der sqldatareader
Gibt es eine Möglichkeit zu überprüfen, ob ich mir auf der letzten Platte ?
Dank
Einfach nur neugierig, warum brauchen Sie das?
Ich will ein paar Ausnahmen, wenn ich auf die letzten Einträge !!
Ich will ein paar Ausnahmen, wenn ich auf die letzten Einträge !!
InformationsquelleAutor wben | 2012-07-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie diese Muster zu identifizieren und verarbeiten die Letzte Zeile im Ergebnis:
Nur wir haben zu ersetzen, wenn Sie(reader.Read()) if(reader.HasRow)
In diesem Fall werden Sie nicht in der Lage zu Lesen, Werte zu Beginn der ersten iteration.
Falsch. Wie Ihr code ist Sie nun, die erste Zeile zurückgegeben wird sogar übersprungen. Sie bereiten den Leser auf den ersten Datensatz in
if (reader.Read())
und dann legen Sieloop = reader.Read()
die direkt setzt die Leser auf die zweite Platte. Immer noch Ihr solutions stellt eine richtige Muster an, wie du das problem gelöst werden kann.Wenn Sie tatsächlich Lesen Sie die Kommentare im code, er ist nicht das überspringen der ersten Platte. Er geht zum ersten Datensatz in der if-Anweisung, dann liest die Werte und setzt loop = reader.Read (), die den zweiten Datensatz.
InformationsquelleAutor Raman Zhylich
Andere als "nicht der ein oder andere ein danach" - Nein. Dies kann bedeuten, müssen Sie Sie Zwischenspeichern der Zeile, zu Lesen versuchen, dann schauen Sie auf die gepufferten Daten, wenn es sich herausstellte, die Letzte zu sein.
In vielen Fällen, wenn die Daten Moderat und Sie erstellen ein Objekt-Modell von einer Art, können Sie einfach nur Aussehen bei der konstruierten Daten, D. H. eine
List<T>
alle Zeilen, wenn mit dem reader, dann nach, dass, Blick auf die Letzte Zeile in der Liste.wenn es in einer Liste, die Wiederholung ist wahnsinnig Billig - oder einfach nur den Zugriff vom indexer:
list[list.Count-1]
. Natürlich Pufferung der vorherigen Zeile ist sogar billiger, aber aufwendiger.um die Dinge klarer, in der akzeptierten Antwort, wo steht " //1. Hier ermittelt werden die Werte, die Sie benötigen, z.B. var myvar = reader.GetBoolean(0);", das ist das, was ich/wir "bedeutet" Puffer die Zeile, zu Lesen versuchen, dann schauen Sie auf die gepufferten Daten, wenn es stellte sich heraus, der Letzte zu sein". Das code-Beispiel macht es klarer, natürlich.
InformationsquelleAutor Marc Gravell
Durchlaufen die
SqlDataReader
:Es gibt nichts in dem Leser sage Ihnen, es ist die Letzte Zeile.
Wenn Sie noch brauchen, um auf die Letzte Zeile, vielleicht speichern Sie die Zeile, die Daten in eine separate variable, die Sie bekommen können, dass die Daten nach dem verlassen der Schleife.
Andere Alternative wäre:
Du hast Recht. Es sollte Leser.Read(). Behoben! (bearbeitet die post)
InformationsquelleAutor Arjan Einbu
Wie Sie wissen, ein SQLDataReader-nicht über eine "row count" - Eigenschaft. Sie gerade Lesen, bis ein EOF-Zeichen.
Jedoch ein DataSet hat. Vielleicht können Sie ersetzen Sie einen DataAdapter und eine Art von Datensatz oder Tabelle:
InformationsquelleAutor paulsm4
Andere Möglichkeit wäre, die Informationen in den Daten gesetzt.
Sie Lesen die Daten mithilfe einer Abfrage. Wir nennen ihn q an. Verwenden Sie diese Abfrage statt:
Nun der Letzte Datensatz hat seqnum = numrecs, die Sie testen können, für die in Ihrer Anwendung.
Durch die Art und Weise, dies setzt Voraus, dass Sie das abrufen der Daten in einer ungeordneten Weise. Wenn Sie bestellen möchten, legen Sie die Kriterien in der "order by" - Klausel für row_number().
InformationsquelleAutor Gordon Linoff
Können Sie das nicht tun, ohne sich zu wiederholen, d.h. das abrufen der Eintrag zweimal. Hier ist eine kürzere Methode
Schrieb ich diese off-hand, also ist es nicht getestet, aber das ist der Ansatz
InformationsquelleAutor codingbiz