AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fehlermeldung bei Eintrag in DB
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlermeldung bei Eintrag in DB

Ein Thema von zeras · begonnen am 28. Jan 2021 · letzter Beitrag vom 31. Jan 2021
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.436 Beiträge
 
Delphi 12 Athens
 
#1

AW: Fehlermeldung bei Eintrag in DB

  Alt 28. Jan 2021, 06:15
Moin...
Zitat:
Aber wie kann ich die Daten so in die DB schreiben, dass es keine Fehlermeldung gibt?
Parameter!

Delphi-Quellcode:
Qry.SQL.Text := 'insert into Blubb (Bla) values(:Bla)';
Qry.ParamByName('Bla').AsString := Feldwert;
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.651 Beiträge
 
Delphi 12 Athens
 
#2

AW: Fehlermeldung bei Eintrag in DB

  Alt 28. Jan 2021, 18:54

Delphi-Quellcode:
Qry.SQL.Text := 'insert into Blubb (Bla) values(:Bla)';
Qry.ParamByName('Bla').AsString := Feldwert;
Danke, das hat funktioniert. Werde das bei meinen nächsten Abfragen beachten.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#3

AW: Fehlermeldung bei Eintrag in DB

  Alt 28. Jan 2021, 19:35
Und QuoteStr solltest du unbedingt vergessen.
Irgendwo hat jede DB-Komponente eine Quote/Escape-Funktion, welche man unbedingt nutzen sollte. (wenn es nicht anders geht und man auf Biegen und Brechen SQLs manuell bauen will)

QuoteStr ist ausschließlich für PascalStrings da, nach der Syntax von Pascal/Delphi-Quellcode,
aber diese SQL-Syntax ist etwas komplett Anderes.


Tipp: Komm mal auf soeine "doofe" Idee, wie einer unserer Kunden, welche in alphanumerischen Artikelnummern nun auch noch ein ' verwenden wollten.
Die SQL-Params waren nicht das Problem, da wir (meistens) kein QuoteStr mehr für DB-Aufgaben nutzen, aber bei Übergabe ans Python, da rauchte QuoteStr wunderschön ab.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (28. Jan 2021 um 19:40 Uhr)
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
625 Beiträge
 
Delphi XE6 Enterprise
 
#4

AW: Fehlermeldung bei Eintrag in DB

  Alt 29. Jan 2021, 09:52
Irgendwo hat jede DB-Komponente eine Quote/Escape-Funktion, welche man unbedingt nutzen sollte. (wenn es nicht anders geht und man auf Biegen und Brechen SQLs manuell bauen will)
Es gibt Szenarien, die durch Parameter nicht abgedeckt werden können, etwa "IN" mit einer variablen Anzahl Einträge. Wohl dem, dessen Datenbank temporäre Tabellen unterstützt: dann muss die SQL-Anweisung zerlegt werden die Erstellung einer temporären Tabelle mit einer Spalte, die die "IN-Werte" aufnimmt, das Füllen dieser Tabelle mit den Werten per INSERT mit Parameter und einem anschließenden Umbau der ursprünglichen Abfrage auf "IN (SELECT x FROM tmp)" oder auch einem JOIN.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#5

AW: Fehlermeldung bei Eintrag in DB

  Alt 29. Jan 2021, 11:40
Alle DBs haben APIs für Array-Parameter.
OK, in vielen DB-Komponenten ist das leider nicht eingebaut.

Na gut, in dem Fall bauen wir auch den String zusammen, geben ihn mit ParamByName als ein String rein und zerlegen ihn dann db-seitig in ein Array/Rows
oder er geht via MakroByName rein, aber da sind es meistens bloß Integer-Arrays und wenn nicht, dann wird wenigstens die "richtige" API verwendet.
z.B. pg_escape_string/pg_escape_literal oder TPgTextConverter.EscapeString
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:43 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-2025 by Thomas Breitkreuz