![]() |
Datenbank: Ole Db Server • Zugriff über: ADO
Wie richtig auf bestimmten Satz in Db prüfen
:-D Hallo zusammen
Bis jetzt habe ich immer so in einer Tabelle überprüft ob ein bestimmter Satz vorhanden ist.
Delphi-Quellcode:
:gruebel: da mir die viele codetipselei und ausserdem der notwendige Textblock echt auf den Zeiger ging habe ich mir eine andere Lösung überlegt die mit weniger geschreibe auskommt und kam auf das.
var
aBad, aBad2:TBetterADODataSet; ... try aBad2:=TBetterADODataSet.Create(Self); with aBad2 do begin Connection:=acn; CommandText:='select * from KompOptionen where ArtNr='+QuotedStr(aArtikelFurOption)+ ' and RelArtNr='+QuotedStr(pArtNr); Active:=True; if recordcount>=1 then begin //machwas end Close; end;//with Bad2 do finally aBad2.Free; end;//Try Bad2 ...
Delphi-Quellcode:
Nun meine Fragen :?: (Habe in Oh auch in Dp und gegoogelt aber nirgends antworten gefunden)
var
sSQL : String; olev : Olevariant; aSet : _Recordset; ... sSql:=Format('Select * from VarianteZuPos where VariantenGruppe=(%s)', [QuotedStr(Caption)]); aSet:=Form1.acn.ConnectionObject.Execute(sSql,olev,0); if aSet.RecordCount < 1 then begin //Mach was ... end; aSet.Close; ... :arrow: was haltet ihr generell davon :arrow: ist das stabil :arrow: wenn man den Typ _Recordset verfolgt erkennt man das irgend ein Interface dahintersteckt und kein Pascal Objekt wie schliesst man diese Resource wieder reicht da die close methode des recordsets oder wird da doch ein objekt erzeugt dass wieder freigegeben werden muss. :arrow: Kennt Ihr eine andere noch effektivere Methode auf das Vorhandenseins eines bestimmten Satzes zu prüfen? :coder2: Bin dankkbar für jede Meinung |
Re: Wie richtig auf bestimmten Satz in Db prüfen
Hallo,
ich benutze DBISAM oder Oracel, und um dort nach vorhandensein eines Datensatz zu suchen benutze ich: nach der SQL Abfrage immer if SQL.isnull oder SQL.isempty. Ich weiss nicht ob es dich weiter bringt aber so geht es halt schneller. Gruß Bob68 |
Re: Wie richtig auf bestimmten Satz in Db prüfen
@Bob68
Danke für deine Meinung das Recordset unterstützt die Methode isempty leider nicht das TDataSet schon ich möchte aber lieber wie gesagt den weg über das recordset gehen da nur 2 zeilen code @All Bitte um Meinungen zu diesem Code Zitat:
|
Re: Wie richtig auf bestimmten Satz in Db prüfen
Zitat:
Zitat:
Zitat:
Zitat:
Sonst: Abfrage mittels Select Count(*) from... und Verwendung von Prepared Statements |
Re: Wie richtig auf bestimmten Satz in Db prüfen
Statt zu testen, ob
Delphi-Quellcode:
ist es performanter zu testen, ob
RecordCount < 1 ;
Delphi-Quellcode:
gegeben ist, denn dann ist RecordCount nämlich 0. Bei grossen Datenmengen, wo RecordCount also einen grossen Wert annimmt, ist die Mehtode langsam da alle Datensätze dadurch am Client durchlaufen werden und gezählt werden. EOF und BOF hingegen sind wesentlich schneller und führen zum gleichen Ergebnis.
EOF and BOF ;
|
Re: Wie richtig auf bestimmten Satz in Db prüfen
:-D :dp: Danke an alle Ihr habt mir sehr geholfen
was ist mit der methode close des recordsets sollte man die aufrufen wenn man des Set nicht mehr braucht oder ist es egal da die variable die das set speichert ohnehin beim verlassen der Methode nicht mehr existiert :?: |
Re: Wie richtig auf bestimmten Satz in Db prüfen
bitte um weitere meinungen :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz