Lassen Sie uns heute über die Eigenschaften des Recordset-Objekts sprechen
1. CursorType-Attribut
AdOpenForwardOnly: Nur Vorwärtscursor, Standardwert. Entspricht einem statischen Cursor, kann jedoch nur vorwärts durch die Datensätze scrollen. Verwenden Sie es, um die Leistung zu verbessern, wenn nur eine unidirektionale Bewegung im Recordset erforderlich ist. (Wie der Name schon sagt, kann sich dieser Cursor nur vorwärts bewegen. Aufgrund seiner eingeschränkten Funktionalität ist er jedoch sehr effizient, wenn er mit Systemressourcen verwendet wird.)
AdOpenKeyset: Keyset-Cursor. Obwohl von anderen Benutzern gelöschte Datensätze in Ihrem Recordset nicht zugänglich sind, ähneln Keyset-Cursor den dynamischen Cursorn, mit der Ausnahme, dass von anderen Benutzern hinzugefügte Datensätze nicht angezeigt werden können. Von anderen Benutzern geänderte Daten sind weiterhin sichtbar. (Mit einem KeySet-Cursor können Sie Änderungen sehen, die andere Benutzer seit seiner Erstellung vorgenommen haben, Sie können jedoch keine Datensätze sehen, die von anderen Benutzern hinzugefügt oder gelöscht wurden.)
AdOpenDynamic: dynamischer Cursor. Kann von anderen Benutzern vorgenommene Ergänzungen, Änderungen und Löschungen sehen. Alle Arten von Verschiebungen innerhalb des Recordsets sind zulässig, mit Ausnahme von Lesezeichenvorgängen, die vom Anbieter nicht unterstützt werden. (Diese Art von Cursor ist leistungsstark und verbraucht die meisten Systemressourcen. Dynamische Cursor können alle Änderungen in den von ihnen gespeicherten Datensatzsammlungen sehen. Benutzer, die dynamische Cursor verwenden, können die von anderen Benutzern vorgenommenen Änderungen, Hinzufügungen und Löschungen sehen. Wenn die Datenanbieter dies tun Wenn Sie diese Art von Cursor zulassen und diese Sichtbarkeit durch das Abrufen von Daten aus der Datenquelle in regelmäßigen Abständen unterstützen, werden zweifellos viele Ressourcen benötigt.)
AdOpenStatic: statischer Cursor. Eine statische Kopie einer Sammlung von Datensätzen, die zum Suchen von Daten oder zum Generieren von Berichten verwendet werden kann. Darüber hinaus sind von anderen Benutzern vorgenommene Ergänzungen, Änderungen oder Löschungen nicht sichtbar. (Ein Cursor der statischen Klasse ist nur eine Momentaufnahme der Daten. Das heißt, er kann keine Änderungen sehen, die andere Benutzer seit seiner Erstellung am RecordSet vorgenommen haben. Mit diesem Cursortyp können Sie vorwärts und rückwärts navigieren. Aufgrund seiner Einfachheit kann Der Ressourcenbedarf ist geringer als bei Dynamic!)
Hinweis: Sobald das RecordSet geöffnet ist, können Sie die CursorType-Eigenschaft nicht mehr ändern. Wenn Sie jedoch zuerst das RecordSet schließen, die CursorType-Eigenschaft ändern und dann das RecordSet erneut öffnen, können Sie den Typ des Cursors immer noch effektiv ändern!
2. LockType-Attribut In jeder Datenbankanwendung, die von mehreren Benutzern gleichzeitig geändert werden kann, müssen Sie sich mit der Situation auseinandersetzen, die auftreten kann, wenn mehrere Benutzer gleichzeitig denselben Datensatz bearbeiten. Wenn dies geschieht, ist die Datenintegrität gefährdet, da ein Benutzer möglicherweise unwissentlich die Änderungen eines anderen überschreibt, wenn er seine eigenen speichert. Zu diesem Zeitpunkt werden Sie das Gefühl haben, nichts zu tun. Um mit dieser Situation umzugehen. Mit ADO können Sie die Art der gleichzeitigen Ereignissteuerung beim Aktualisieren eines RecordSet-Objekts bestimmen und festlegen, wie Datensätze eines Benutzers während der Bearbeitung gesperrt werden. Dies wird durch das LockType-Attribut bestimmt. Dieses Attribut hat vier Werte:
adLockReadonly: Standardwert, schreibgeschützt. Daten können nicht geändert werden. (Dies ist der Standardwert von RecordSet. Wenn Sie die Sperrmethode auf diesen Wert festlegen, können Sie das Recordset nicht aktualisieren.)
adLockPessimistic: Konservative Datensatzsperre (Eintrag für Eintrag). Der Anbieter führt die notwendigen Aktionen aus, um eine erfolgreiche Bearbeitung des Datensatzes sicherzustellen, typischerweise indem er den Datensatz nach der Bearbeitung sofort in der Datenquelle sperrt. (Wenn dieser Sperrtyp festgelegt ist, ist der Datensatz gesperrt und kann nur von Benutzern aufgerufen werden, die ihn zwischen dem Start der Bearbeitung und der Übermittlung der Datensatzaktualisierung an den Datenanbieter bearbeiten!)
adLockOptimistic: Datensatzsperre öffnen (Datensatz für Datensatz). Der Anbieter verwendet offenes Sperren und sperrt Datensätze nur, wenn die Update-Methode aufgerufen wird. (Datensätze werden nur in dem Moment gesperrt, in dem die Daten an den Datenanbieter übermittelt werden.)
adlockBatchOptimistic: Stapelaktualisierung öffnen. Wird für den Batch-Update-Modus im Gegensatz zum sofortigen Update-Modus verwendet. (Ein RecordSet, das auf diese Art von Sperrmodus eingestellt ist, wird als Stapelaktualisierungsmodus des RecordSets bezeichnet. Dadurch kann die Aktualisierungsgeschwindigkeit des RecordSets zum Ändern der Daten beschleunigt werden. Da jedoch mehrere Datensätze gleichzeitig aktualisiert werden, wird dies auch der Fall sein verschlimmern die Probleme im Zusammenhang mit gleichzeitigem Zugriff!)
3 ,AbsolutePage-Eigenschaft
Das AbsolutePage-Attribut legt die Seitennummer der Seite fest, auf der sich der aktuelle Datensatz befindet. Verwenden Sie das PageSize-Attribut, um das Recordset-Objekt in logische Seiten zu unterteilen. Die Anzahl der Datensätze auf jeder Seite ist PageSize (mit der Ausnahme, dass die letzte Seite möglicherweise weniger als PageSize hat). Anzahl der Datensätze). Hierbei ist zu beachten, dass nicht alle Datenanbieter dieses Attribut unterstützen, daher sollten Sie es mit Vorsicht verwenden.
Wie die AbsolutePosition-Eigenschaft beginnt auch die AbsolutePage-Eigenschaft mit 1. Wenn der aktuelle Datensatz die erste Zeile von Recordset ist, ist AbsolutePage 1. Sie können die AbsolutePage-Eigenschaft so festlegen, dass sie zur ersten Datensatzzeile auf einer angegebenen Seite wechselt.
4. AbsolutePosition-Attribut Wenn Sie die Position des aktuellen Indikators im RecordSet bestimmen müssen, können Sie das AbsolutePosition-Attribut verwenden.
Der Wert des AbsolutePosition-Attributs ist die Position des aktuellen Indikators relativ zum ersten Trade, beginnend bei 1, d. h. die AbsolutePosition des ersten Trades ist 1.
Beachten Sie, dass es beim Zugriff auf ein RecordSet keine Garantie dafür gibt, dass das RecordSet jedes Mal in der gleichen Reihenfolge angezeigt wird.
Um AbsolutePosition zu aktivieren, müssen Sie es zunächst so einstellen, dass es den Client-Cursor (Zeiger) verwendet: rs.CursorLocation=3
5. PageCount-Attribut Verwenden Sie das PageCount-Attribut, um zu bestimmen, wie viele „Seiten“ an Daten das Recordset-Objekt enthält. Die „Seite“ ist hier eine Sammlung von Datensätzen mit einer Größe, die der Einstellung der PageSize-Eigenschaft entspricht. Auch wenn die Anzahl der Datensätze auf der letzten Seite kleiner als der Wert von PageSize ist, wird die letzte Seite auch als Seite betrachtet Seitenanzahl. Es ist zu beachten, dass nicht alle Datenanbieter dieses Attribut unterstützen.
6. PageSize-Attribut
Das PageSize-Attribut ist der Schlüssel zur Bestimmung, wie Seiten angezeigt werden, wenn ADO auf die Datenbank zugreift. Sie können damit bestimmen, wie viele Datensätze eine logische „Seite“ bilden. Legt eine Seitengröße fest und erstellt sie, die das Verschieben zum ersten Datensatz einer anderen logischen Seite mithilfe der AbsolutePage-Eigenschaft ermöglicht. Die PageSize-Eigenschaft kann jederzeit festgelegt werden.
7. RecordCount-Attribut Dies ist auch ein sehr häufig verwendetes und wichtiges Attribut. Wir verwenden häufig das RecordCount-Attribut, um herauszufinden, wie viele Datensätze ein Recordset-Objekt enthält. Verwenden Sie die RecordCount-Eigenschaft, um die Anzahl der Datensätze in einem Recordset-Objekt zu bestimmen. Diese Eigenschaft gibt –1 zurück, wenn ADO die Anzahl der Datensätze nicht ermitteln kann oder wenn der Anbieter oder Cursortyp RecordCount nicht unterstützt. Das Lesen der RecordCount-Eigenschaft für ein geschlossenes Recordset führt zu einem Fehler. Der Cursortyp des Recordset-Objekts beeinflusst, ob die Anzahl der Datensätze ermittelt werden kann. Die RecordCount-Eigenschaft gibt -1 für Nur-Vorwärts-Cursor, die tatsächliche Anzahl für statische oder Keyset-Cursor und -1 oder die tatsächliche Anzahl für dynamische Cursor zurück, abhängig von der Datenquelle.
8. BOF- und EOF-Attribute Normalerweise schreiben wir Code in das ASP-Programm, um die BOF- und EOF-Attribute zu überprüfen, um den Speicherort des RecordSet zu ermitteln, auf den der Indikator derzeit zeigt. Mithilfe der BOF- und EOF-Attribute können wir ermitteln, ob a Das Recordset-Objekt enthält Datensätze oder weiß, ob die verschobene Datensatzzeile den Bereich des Recordset-Objekts überschritten hat.
Wenn die Position des aktuellen Datensatzes vor der ersten Zeile eines Recordset-Objekts liegt, gibt die BOF-Eigenschaft „true“ zurück, andernfalls gibt sie „false“ zurück.
Wenn die Position des aktuellen Datensatzes hinter der letzten Zeile eines Recordset-Objekts liegt, gibt die EOF-Eigenschaft „true“ zurück, andernfalls gibt sie „false“ zurück.
(Sowohl BOF als auch EOF sind „True“, was darauf hinweist, dass im RecordSet keine Datensätze vorhanden sind.)
9. Das Filter-Attribut gibt Filterbedingungen für die Daten im Recordset-Objekt an wird zum aktuellen Cursor.
Dies wirkt sich auf andere Eigenschaften aus, die auf dem aktuellen Cursor-Rückgabewert basieren, z. B. AbsolutePosition, AbsolutePage, RecordCount und PageCount, da das Festlegen der Filter-Eigenschaft auf einen
bestimmten
Wert den aktuellen Datensatz zum ersten Datensatz verschiebt, der dem neuen Wert entspricht.
Ich denke, dass dieses Attribut sehr nützlich ist. Nachdem wir das Recordset geöffnet und bestimmte Entscheidungen getroffen haben, möchten wir die Datensätze filtern, d. h. die SQL-Anweisung neu anpassen. Sollen wir das Recordset schließen und mit einer neuen SQL-Anweisung öffnen? Nein, wir verwenden zum Beispiel das Filter-Attribut zum Filtern
rs.open exec,conn,1,1
wenn .... dann rs.filter="name='xxx'"
anstatt
rs.open exec,conn,1,1
wenn...dann
rs.close
exec=exec&" wobei name='xxx'"
rs.open exec,conn,1,1
Ende wenn
Tatsächlich muss Filter an vielen Stellen verwendet werden. Darüber können Sie auch in Zukunft nachdenken.
Morgen werden wir weiter über die Methoden des Recordset-Objekts sprechen.