![]() |
Datenbank: sqlite3 • Version: 3 • Zugriff über: sqlite3.dll
gleiche einträge verhindern
Hallo,
ich nutze die "sqlite3.dll" und habe damit sogut wie keine erfahrung. so ich kann inzwischen einträge hinzufügen zurlaufzeit und im qullcode das problem ist dabei: sobalt einträge doppelt vorkommen das eine fehlermeldung erzeugt wird.... kann ich diese feherlmeldung irgenwie abfangen und verarbeiten ? bzw. verhindern evlt ? |
Re: gleiche einträge verhindern
Hallo,
mache
Delphi-Quellcode:
Heiko
try
Insert; except end; |
Re: gleiche einträge verhindern
Geht leider nicht...
hier ist mein qullcode
Delphi-Quellcode:
mir ist heute noch was anders eingefallen. ich weiß nur nicht ob sich das lohnen würde und zwar:
procedure TForm1.InitDb(FileName:TFileName);
var slDBpath:String; i:Integer; isda:Boolean; begin slDBpath:=ExtractFilepath(application.exename)+ 'test.db'; sldb := TSQLiteDatabase.Create(slDBPath); // if sldb.TableExists('testTable') then begin // sSQL := 'DROP TABLE testtable'; // sldb.execsql(sSQL); // end; if sldb.TableExists('testTable') = False then begin sSQL :='CREATE TABLE testtable ([Name] VARCHAR (255));'; sldb.execsql(sSQL); sldb.execsql('CREATE INDEX TestTableName ON [testtable]([Name]);'); end; try sldb.BeginTransaction; sSQL := 'INSERT INTO testtable(Name) VALUES ("Some Name");'; sldb.ExecSQL(sSQL); sSQL := 'INSERT INTO testtable(Name) VALUES ("Another Name");'; sldb.ExecSQL(sSQL); sldb.Commit; except end; sltb := slDb.GetTable('SELECT * FROM testtable'); for i:=0 to sltb.Count-1 do begin ListBox1.Items.add(sltb.FieldAsString(sltb.FieldIndex['Name'])); sltb.Next; end; end; ich lege ein array an von typ tmyData z.b. und in diesem record ist eine boolean variable und ein array of interger. jetzt ich jedes zeichen durchgehen und umwandeln und nachschauen ob es diese zeichen mit dieser position schon gibt. könnt ihr folgende? so müste ich nicht suchen und vorallen bei größeren datenmengen könnte diese verfahren praktisch sein vorrausgesetzt das es funktioniert und auch so klappt wie ich es mir vorstelle. achja dieser array of interger brauche ich um dort die position des jeweiligen zeichen obzuspeichern. Ich gehe ja jedes zeichen durch von string der hinzugefügt werden soll und füge diese in eine listbox ein. bevor ich das mache wollte ich jedese zeichen in einer schleife durchgehen und prüfen ob es diesen zeichen schon gibt wenn ja, gibt es diese zeichen an der jeweiligen position. jetzt wollte ich daraus ein string bilden und verleichen mit dem string den ich hinzufügen möchte. mit groß klein schreibung vergleichen. so die idee jetzt weiß ich nicht ob das wirklich schneller als z.b. die listbox jedes mal durchzugehen und zu schauen ob es dort schon ein entsprechden eintrag gibt... ich hoffe ihr versteht was ich vorhabe.... |
Re: gleiche einträge verhindern
@mimi
Ich bin kein SQL Fachmann, aber beim Überfliegen Deines Codes fällt mir auf: Solltest Du nicht vorher in der Datenbank nachsehen, ob der Name schon vorhanden ist? Unter Try willst Du gleich die Daten eingeben? :gruebel: Und bei einem Conflict kann Du der Datenbank sagen, was Du tun möchtest: ![]() Vielleicht hilft es Dir weiter. Beste Grüße Go2EITS |
Re: gleiche einträge verhindern
vielen dank für den link, sowas hatte ich vor.
ich wollte gerne nach prüfen ob es diesen eintrag schon gibt oder nicht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 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