AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Variablen übergeben bei insert
Thema durchsuchen
Ansicht
Themen-Optionen

Variablen übergeben bei insert

Ein Thema von BBoy · begonnen am 19. Aug 2016 · letzter Beitrag vom 21. Aug 2016
Antwort Antwort
Seite 1 von 2  1 2      
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Variablen übergeben bei insert

  Alt 19. Aug 2016, 16:13
Datenbank: sqllite • Version: ? • Zugriff über: direkt
Ich arbeite an diesem Tutorial: https://www.delphi-treff.de/tutorial...d-dbexpress/2/

Nun möchte ich bei diesem Teil:
Testdaten hinzufügen
Delphi-Quellcode:
var FSQLCommandText: String; FSQLDataSet: TDataSet; sStr: String; i: Integer;

Try
  FSQLCommandText := 'INSERT INTO Buecher(BuchID,Titel,AutorID,ISBN) VALUES (NULL,"B1",1,"123");';
  SQLConnection.ExecuteDirect(FSQLCommandText);
  FSQLCommandText := 'INSERT INTO Buecher(BuchID,Titel,AutorID,ISBN) VALUES (NULL,"B2",1,"456");';
  SQLConnection.ExecuteDirect(FSQLCommandText);
Except On E: EDatabaseError Do ShowMessage(E.Message);
End;
Variablen übergeben. Also anstatt AutorID eine Variable in der die AutorID steht. Wie kann ich das verwirklichen? Denn bisher habe ich nur eine SQLConnection auf dem Formular.
Quasi:
Delphi-Quellcode:
Var Aid = 7;
FSQLCommandText := 'INSERT INTO Buecher(BuchID,Titel, Aid, ISBN) VALUES (NULL,"B1",1,"123");';

Geändert von TBx (19. Aug 2016 um 23:37 Uhr) Grund: Delphi-Tags eingefügt
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Variablen übergeben bei insert

  Alt 19. Aug 2016, 16:21
Hallo,

FSQLCommandText := 'INSERT INTO Buecher(BuchID,Titel, Aid,ISBN) VALUES (NULL,"B1",'+IntToStr(MeineId)+',"123");'; oder bei Dir
FSQLCommandText := 'INSERT INTO Buecher(BuchID,Titel, Aid,ISBN) VALUES (NULL,"B1",'+IntToStr(AId)+',"123");';
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Variablen übergeben bei insert

  Alt 19. Aug 2016, 16:31
Warum keine (SQL-)Parameter?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Variablen übergeben bei insert

  Alt 19. Aug 2016, 16:31
Und für Texte ala "B1" muß man mal nachsehen wo sich die Quote-Funktion der DB-Schnittstelle versteckt und muß den String darüber vorher Quoten, bevor man ihn in den SQL-Text einfügt.

Am Besten ist es natürlich immer, wenn die DB-Schnittstelle parametrisierte Abfragen ermöglicht.
Oftmals in etwa so
Delphi-Quellcode:
Query.SQL.Text := 'INSERT INTO Buecher(BuchID, Titel, Aid, ISBN) VALUES (NULL, :Titel, :AId, :ISBN);';
Query.ParamByName('Titel').AsString := 'B1';
Query.ParamByName('Aid').AsInteger := 1;
Query.ParamByName('ISBN').AsString := '123';
Query.Execute;
Is natürlich unschön, dass es hier so nicht geht.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Variablen übergeben bei insert

  Alt 19. Aug 2016, 16:36
Also wenn is sich z.B. um die ID eines Benutzers handelt
würde ich es so machen:
'INSERT INTO Buecher(BuchID, Titel, Aid, ISBN) VALUES (NULL, :Titel, (select AId from nutzertable where Name=:nutzername), :ISBN);'; bei der direkten Verwendung von IDs ist zu oft etwas schief gegangen.
(zumindestens bei mir)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#6

AW: Variablen übergeben bei insert

  Alt 19. Aug 2016, 16:39
wenn man zu kompliziert denkt, kommt man auf so einfache Lösungen nicht

Danke


Warum keine (SQL-)Parameter?
Ist halt so in diesem Tutorial...
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Variablen übergeben bei insert

  Alt 19. Aug 2016, 16:46
Hallo,

SQLConnection.ExecuteDirect(FSQLCommandText);
hat doch keine Parameter-Option oder doch?

aus der Hilfe.

Mit ExecuteDirect können Sie eine SQL-Anweisung ohne Parameter ausführen. Sie umgehen auf diese Weise sowohl die Verwendung einer SQL-Datenmenge als auch die Vorbereitung der Anweisung. Wenn die Anweisung einen Cursor zurückgibt, führt ExecuteDirect sie aus, ohne einen Cursor zurückzugeben.

SQL ist die auszuführende Anweisung.

ExecuteDirect gibt 0 zurück, wenn die Anweisung erfolgreich ausgeführt wurde. Andernfalls wird ein dbExpress-Fehlercode zurückgeliefert.
Anmerkung: Verwenden Sie für SQL-Anweisungen, die Parameter enthalten oder einen Cursor zurückgeben, die Methode Execute.
Heiko

Geändert von hoika (19. Aug 2016 um 16:48 Uhr)
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#8

AW: Variablen übergeben bei insert

  Alt 19. Aug 2016, 20:15
Stimmt. Eigentlich wäre SQLConnection.Execute die bessere Wahl. Aber ich denke für meinen einfachen Zweck ist es auch so ok. Sind ja nicht wirklich Parameter bei mir.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Variablen übergeben bei insert

  Alt 20. Aug 2016, 10:15
Hallöle...
Zitat:
Aber ich denke für meinen einfachen Zweck ist es auch so ok...
Ein "vergessener" Parameter reicht schon für SQL Injection aus... Lieber gleich richtig...
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#10

AW: Variablen übergeben bei insert

  Alt 20. Aug 2016, 13:34
Stimmt auch wieder
Aber in diesem Fall nutze nur ich das Programm als kleines Hilfsmittel zur Erfassung.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:32 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