Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Daten variabel in DB speichern (https://www.delphipraxis.net/139760-daten-variabel-db-speichern.html)

Balu der Bär 4. Sep 2009 17:43

Datenbank: Firebird • Version: aktuelle • Zugriff über: ZEOS

Daten variabel in DB speichern
 
Moinsen,

mittels folgender Prozedur speichere ich Daten in eine Datenbank:
Delphi-Quellcode:
SQL.Text := 'INSERT INTO TABELLE1 (XYZ_NAME) VALUES (:data);';
ParamByName('data').AsString := data;
ExecSQL;
Funktionsaufruf dann
Delphi-Quellcode:
SchreibeDaten('test223445');
Und die Daten werden erfolgreich in Tabelle1 im Feld XYZ_NAME abgespeichert.

Jetzt möchte ich diese Funktion variabel gestalten, also beim Funktionsaufruf die Tabelle und das Feld mit angeben. Praktisch gesehen:
Delphi-Quellcode:
SQL.Text := 'INSERT INTO :table (:field) VALUES (:data);';
ParamByName('table').AsString := table;
ParamByName('field').AsString := field;
ParamByName('data').AsString := data;
ExecSQL;
Funktionsaufruf ist dann:
Delphi-Quellcode:
SchreibeDaten('TABELLE1', 'XYZ_NAME', 'test223445');
Klappt leider nicht, was mache ich falsch?

Danke Euch
Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EZSQLException mit der Meldung 'SQL Error: Dynamic SQL Error SQL error code = -104 Token unknown - line 1, column 13 ?. Error Code: -104. Invalid token The SQL: INSERT INTO ? (?) VALUES (?);; ' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
//Edit: Kann nicht formatieren...

Dax 4. Sep 2009 17:48

Re: Daten variabel in DB speichern
 
Parameter kann man nur für Werte einsetzen, nicht für Entitätsnamen.

mkinzler 4. Sep 2009 17:56

Re: Daten variabel in DB speichern
 
Man könnte aber die Abfrage dynamisch in einem execute Block oder einer SP zusammenbauen.

webcss 4. Sep 2009 18:01

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;

Dax 4. Sep 2009 18:15

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.

webcss 4. Sep 2009 18:23

Re: Daten variabel in DB speichern
 
Zitat:

Zitat von Dax
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.

Nur weil ich schreibfaul bin. :zwinker:
Dann halt so:
Delphi-Quellcode:
procedure SchreibeDaten(ATable, AField, AValue:string);
begin
  SQL.Text :=Format('INSERT INTO %s (%s) values(:data)',[ATable,AField]);
  ParamByName('data').AsString:=AValue;
  ExecSQL;
end;
[edit=mkinzler]Tag gefixt Mfg, mkinzler[/edit]

Balu der Bär 5. Sep 2009 07:03

Re: Daten variabel in DB speichern
 
Ich bedanke mich recht herzlich. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:59 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