AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Insert-Statement nicht verstanden
Thema durchsuchen
Ansicht
Themen-Optionen

Insert-Statement nicht verstanden

Ein Thema von HerWin · begonnen am 6. Dez 2021 · letzter Beitrag vom 7. Dez 2021
Antwort Antwort
HerWin

Registriert seit: 6. Dez 2021
5 Beiträge
 
#1

Insert-Statement nicht verstanden

  Alt 6. Dez 2021, 18:52
Datenbank: sqlite • Version: 3.36 • Zugriff über: Firedac
Hallo,
ich möchte eine SQLite-Datenbank mit Firedac nutzen.
Dazu habe ich mir das Beispiel GettingStarted aus Delphi 10.4 geladen.
Hier gibt es einen SQL Insert-Befehl, den ich nicht verstehe:

'insert into Categories(CategoryName, Description, Picture) ' +
'values(:N, :D, :P)', ['New category', 'New description', $0334])

Was bedeuted hier values(:N, :D, :P)?

Ich gehe davon aus, das sind die Feldnamen im DBGrid. Aber wo werden die
definiert? In der Datenbank stehen die richtigen Feldnamen (CategoryName...)
Ich kann, auch nach heftigem Suchen, nichts finden.
Leider gibt die Delphi-Beschreibung dazu nichts her.

Wenn mir das jemand erklärt, wäre ich dankbar.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.549 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Insert-Statement nicht verstanden

  Alt 6. Dez 2021, 19:31
Es handelt sich um SQL-Parameter. Damit kann man sein Statement einmalig deklarieren und muss lediglich die Parameterwerte neu belegen, wenn man z.B. mehrere Datensätze in einem Rutsch anlegen möchte. Ein weiterer Vorteil ist, dass Parameterwerte automatisch passend zum Typ maskiert werden, man schützt sich damit ganz nebenbei vor SQL-Injection.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
HerWin

Registriert seit: 6. Dez 2021
5 Beiträge
 
#3

AW: Insert-Statement nicht verstanden

  Alt 6. Dez 2021, 20:09
Hallo DeddyH,
danke für die Antwort. Ich habe es aber immer noch nicht verstanden.

Woher kommen die Buchstaben N, D und P?

Sollen das Datentypen sein? N = Numerisch, D = Dezimal? P = ???
Sind das einfach nur beliebige Bezeichner, die der Reihe nach abgearbeitet werden?

Wozu brauche ich das hier, wenn nur ein Datensatz verarbeitet wird (Schutz vor SQL-Injection)?

VG
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.549 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Insert-Statement nicht verstanden

  Alt 6. Dez 2021, 20:14
Ein SQL-Parameter beginnt immer mit einem Doppelpunkt. Danach kann jeder gültige Bezeichner kommen, den kannst Du frei vergeben. In diesem Beispiel könnte man theoretisch auch auf Parameter verzichten, müsste dann aber beispielsweise String-Werte selber quoten. Im realen Leben ist es aber meist eher so, dass die Werte eben nicht hartkodiert im Code stehen, sondern aus Benutzereingaben stammen. Diese sind grundsätzlich als potenziell gefährlich zu betrachten, da ist es äußerst wichtig, sich gegen SQL-Injection zu schützen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
HerWin

Registriert seit: 6. Dez 2021
5 Beiträge
 
#5

AW: Insert-Statement nicht verstanden

  Alt 6. Dez 2021, 20:16
Vielen Dank,

das muß ich mir ansehen.
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
137 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Insert-Statement nicht verstanden

  Alt 7. Dez 2021, 00:35
Hallo HerWin!
Zitat:
Sollen das Datentypen sein? N = Numerisch, D = Dezimal? P = ???
Mein Tipp anhand des SQL-Befehls ist eher N = CategoryName, D = Description, P = Picture
  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 22:09 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