![]() |
Datenbank: Firebird • Version: aktuelle • Zugriff über: ZEOS
Daten variabel in DB speichern
Moinsen,
mittels folgender Prozedur speichere ich Daten in eine Datenbank:
Delphi-Quellcode:
Funktionsaufruf dann
SQL.Text := 'INSERT INTO TABELLE1 (XYZ_NAME) VALUES (:data);';
ParamByName('data').AsString := data; ExecSQL;
Delphi-Quellcode:
Und die Daten werden erfolgreich in Tabelle1 im Feld XYZ_NAME abgespeichert.
SchreibeDaten('test223445');
Jetzt möchte ich diese Funktion variabel gestalten, also beim Funktionsaufruf die Tabelle und das Feld mit angeben. Praktisch gesehen:
Delphi-Quellcode:
Funktionsaufruf ist dann:
SQL.Text := 'INSERT INTO :table (:field) VALUES (:data);';
ParamByName('table').AsString := table; ParamByName('field').AsString := field; ParamByName('data').AsString := data; ExecSQL;
Delphi-Quellcode:
Klappt leider nicht, was mache ich falsch?
SchreibeDaten('TABELLE1', 'XYZ_NAME', 'test223445');
Danke Euch Zitat:
|
Re: Daten variabel in DB speichern
Parameter kann man nur für Werte einsetzen, nicht für Entitätsnamen.
|
Re: Daten variabel in DB speichern
Man könnte aber die Abfrage dynamisch in einem execute Block oder einer SP zusammenbauen.
|
Re: Daten variabel in DB speichern
oder einfach:
Delphi-Quellcode:
procedure SchreibeDaten(ATable, AField, AValue:string);
begin SQL.Text :=Format('INSERT INTO %s (%s) values(%s)',[ATable,AField,AValue]); ExecSQL; end; |
Re: Daten variabel in DB speichern
NEIN! Daten packt man grundsätzlich nur über Parameter in ein SQL-Statement, alles andere ist Wahnsinn. Tabellen- und Spaltennamen, die nicht der Kontrolle des Nutzers unterliegen, kann man natürlich so reinsetzen, aber niemals Daten.
|
Re: Daten variabel in DB speichern
Zitat:
Dann halt so:
Delphi-Quellcode:
[edit=mkinzler]Tag gefixt Mfg, mkinzler[/edit]
procedure SchreibeDaten(ATable, AField, AValue:string);
begin SQL.Text :=Format('INSERT INTO %s (%s) values(:data)',[ATable,AField]); ParamByName('data').AsString:=AValue; ExecSQL; end; |
Re: Daten variabel in DB speichern
Ich bedanke mich recht herzlich. :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21: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 by Thomas Breitkreuz