AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi doppelter eintrag in db vergleichen
Thema durchsuchen
Ansicht
Themen-Optionen

doppelter eintrag in db vergleichen

Ein Thema von missi · begonnen am 8. Aug 2005 · letzter Beitrag vom 10. Aug 2005
Antwort Antwort
Seite 2 von 2     12   
missi

Registriert seit: 7. Aug 2005
Ort: Ddorf
27 Beiträge
 
#11

Re: doppelter eintrag in db vergleichen

  Alt 10. Aug 2005, 13:22
Zitat von Luckie:
Dann übernimmt der Datenbanktreiber, die Prüfung, ob der Wert schon mal in der Spalte existiert oder nicht.
crashed es dann nicht wenn ich versuche nen doppelten eindrag dann in die db zu speichern?

  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#12

Re: doppelter eintrag in db vergleichen

  Alt 10. Aug 2005, 13:32
Ja, es löst eine Exception aus, die du in Delphi auswerten kannst und entprechend drauf reagieren kannst.
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#13

Re: doppelter eintrag in db vergleichen

  Alt 10. Aug 2005, 13:32
Zitat von missi:
Zitat von Luckie:
Dann übernimmt der Datenbanktreiber, die Prüfung, ob der Wert schon mal in der Spalte existiert oder nicht.
crashed es dann nicht wenn ich versuche nen doppelten eindrag dann in die db zu speichern?

Jau. Aber soweit sollte es ja im Idealfall nicht kommen. Dazu baut man dann sowas wie shmia. Aber falls das aus irgendwelchen Gründen mal schiefgeht ist zumindest Datenbankseitig 100% sichergestellt, dass es keine Doubletten gibt.

//edit
*sing* wo sind all die roten Kästchen hin?.... */sing*
  Mit Zitat antworten Zitat
missi

Registriert seit: 7. Aug 2005
Ort: Ddorf
27 Beiträge
 
#14

Re: doppelter eintrag in db vergleichen

  Alt 10. Aug 2005, 13:36
Zitat von Jelly:
Ja, es löst eine Exception aus, die du in Delphi auswerten kannst und entprechend drauf reagieren kannst.
das tu ich ja schon mit locate bevor ich es in die db schreibe *verwirrt ist*

warum sollte es besser sein erst in die db zu schreiben auf ne exception zu warten und dann sagen das sie bereits vorhanden ist?

ausserdem lesne wir ja den chip aus und wenn er in der db vorhanden ist springt er gleich zu diesem datensatz. also ist es unmöglich den chip zweimal darein zu schreiben. und ein chip hat eine eindeutige id.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#15

Re: doppelter eintrag in db vergleichen

  Alt 10. Aug 2005, 13:42
Zitat von Jelly:
Zitat von shmia:
Diese Vorgehensweise hat mehrere Vorteile:
* man braucht nicht mit INSERT und UPDATE Anweisungen zuschreiben, die manchmal 50 Parameter benötigen
Wenn du 50 Felder hast, musst du auch so über deine Methode die einzelnen Felder füllen. Kürzer wird das nicht
Man braucht aber keine 50 Parameter hinschreiben, sondern kann bequem über die "Collection" TFields arbeiten.
Also kann man auch eine Schleife von 0 bis Fields.Count-1 durchlaufen, um die Felder zu füllen.
Da man die Daten über TField schreibt, kann man auch vom OnSetText profitieren.
Zitat von Jelly:
Zitat von shmia:
kleiner Nachteil:
* es werden Daten abgefragt, die meistens gar nicht benötigt werden (aber nur ein Datensatz, macht ja nix)
Das gilt aber nur bei einem select * from... Du musst doch aber nicht alle Felder einbeziehen. Statt dem * wählst du nur die du brauchst.
Es müssen alle Felder, die die Eigenschaft NOT NULL besitzen, in der Feldliste aufgeführt werden, da sonst das Einfügen nicht funktioniert. Diese Felder werden also auch dann gelesen, obwohl man diese nur zum einfügen braucht. (da würde ich mir aber nur Gedanken drum machen, wenn Tausende Datensätze eingefügt/updatet werden sollen)
Aber du hast recht, wenn es Felder gibt, die nicht befüllt werden, kann man sparen, indem man alle benötigten Felder bei SELECT auflistet.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#16

Re: doppelter eintrag in db vergleichen

  Alt 10. Aug 2005, 16:30
Zitat von missi:
... das tu ich ja schon mit locate bevor ich es in die db schreibe *verwirrt ist*
Hai,

das alles entscheidende "Zauberwort" ist -> Multiuserfähigkeit.

Mit deiner Methode und auch der von shima wird nur gepüft ob es in diesem Moment noch keinen Datensatz mit der selben Seriennummer gibt. Es kann aber Clientseitig nie geprüft werden ob nicht 1 Taktzyklus nach eurer "Prüfung" von einem anderen User diese Seriennummer erfasst wurde.

Solch eine Prüfung kann nur vom DB-Server durchgeführt werden.

Darum legt man auf ein Feld deren Inhalt einmalig sein soll einen Unique Key. Wenn nun ein zweiter Datensatz mit dem selben Inhalt eingefügt werden soll wird vom DB-Server ein entsprechender Fehler erzeugt.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz