Einzelnen Beitrag anzeigen

freejay

Registriert seit: 26. Mai 2004
Ort: Nürnberg
269 Beiträge
 
Delphi 11 Alexandria
 
#1

Parameterverwendung bei DB-, Feld- und Tabellennamen

  Alt 14. Jan 2016, 11:01
Datenbank: MySQL • Version: 5.x • Zugriff über: MyDac
Hallo zusammen,

ich habe früher meine SQL-Statements immer über den Formatbefehl zusammengesetzt, z.B.:
Code:
MyQuery.SQL.Text := format('SELECT * FROM `%s`;',[Tabellenname]);
Da dies Methode ziemlich unsicher ist, wenn der Tabellenname beispielsweise von einem User eingetippt werden kann (Stichwort "SQL-Injection"), möchte ich künftig lieber sauber mit Parametern arbeiten. Bei Values - z.B. in Where-Bedingungen - ist das auch gar kein Problem. Aber bei Feld-, DB- und Tabellennamen funktioniert das scheinbar nicht. Beispiel:
Code:
MyQuery.SQL.Text := 'SELECT * FROM :TabName;';
MyQuery.ParamByName('TabName').AsString := TabellenName;
MyQuery.Open;
Das führt zu einem Fehler, da der Tabellenname offenbar mit führendem und schließendem Hochkomma in das SQL-Staement eingebaut wird.
:TabName in die bei Feld- und Tabellennamen üblichen Hochkommas zusetzen (`:TabName`), hilft auch nicht...

Übersehe ich da was oder funktionieren DB-, Tabellen- und Feldnamen einfach nicht über Parameter?

Danke im Voraus!

Freejay
[Delphi 11.3.1 Enterprise; Win10/11; MySQL; VCL]
  Mit Zitat antworten Zitat