![]() |
Datenbank: sqllite • Version: ? • Zugriff über: direkt
Variablen übergeben bei insert
Ich arbeite an diesem Tutorial:
![]() Nun möchte ich bei diesem Teil: Testdaten hinzufügen
Delphi-Quellcode:
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.
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; Quasi:
Delphi-Quellcode:
Var Aid = 7;
FSQLCommandText := 'INSERT INTO Buecher(BuchID,Titel, Aid, ISBN) VALUES (NULL,"B1",1,"123");'; |
AW: Variablen übergeben bei insert
Hallo,
Delphi-Quellcode:
oder bei Dir
FSQLCommandText := 'INSERT INTO Buecher(BuchID,Titel, Aid,ISBN) VALUES (NULL,"B1",'+IntToStr(MeineId)+',"123");';
Delphi-Quellcode:
FSQLCommandText := 'INSERT INTO Buecher(BuchID,Titel, Aid,ISBN) VALUES (NULL,"B1",'+IntToStr(AId)+',"123");';
|
AW: Variablen übergeben bei insert
Warum keine (SQL-)Parameter?
|
AW: Variablen übergeben bei insert
Und für Texte ala
Delphi-Quellcode:
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.
"B1"
Am Besten ist es natürlich immer, wenn die DB-Schnittstelle parametrisierte Abfragen ermöglicht. Oftmals in etwa so
Delphi-Quellcode:
Is natürlich unschön, dass es hier so nicht geht.
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; |
AW: Variablen übergeben bei insert
Also wenn is sich z.B. um die ID eines Benutzers handelt
würde ich es so machen:
SQL-Code:
bei der direkten Verwendung von IDs ist zu oft etwas schief gegangen.
'INSERT INTO Buecher(BuchID, Titel, Aid, ISBN) VALUES (NULL, :Titel, (select AId from nutzertable where Name=:nutzername), :ISBN);';
(zumindestens bei mir) Gruß K-H |
AW: Variablen übergeben bei insert
wenn man zu kompliziert denkt, kommt man auf so einfache Lösungen nicht :oops:
Danke :thumb: Zitat:
|
AW: Variablen übergeben bei insert
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. |
AW: Variablen übergeben bei insert
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.
|
AW: Variablen übergeben bei insert
Hallöle...8-)
Zitat:
|
AW: Variablen übergeben bei insert
Stimmt auch wieder
Aber in diesem Fall nutze nur ich das Programm als kleines Hilfsmittel zur Erfassung. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 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