AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

sort by oder nicht sort by

Ein Thema von blutigerAnfänger · begonnen am 7. Mär 2014 · letzter Beitrag vom 12. Mär 2014
Antwort Antwort
blutigerAnfänger

Registriert seit: 23. Mär 2010
82 Beiträge
 
#1

sort by oder nicht sort by

  Alt 7. Mär 2014, 19:53
Datenbank: firebird • Version: 2 • Zugriff über: interbase
Hallo

Mit folgenden Zeilen erstelle ich meine Abfrage.
Delphi-Quellcode:
procedure TForm1.AbfrageClick(Sender: TObject);
var SQLString1 , SQLString2 :String; k:integer;
begin
Edit1.Text : blabla

  with Query1 do
  begin
    Active:=False;
    SQL.Clear;
    SQL.Add('Select * from '+ combobox1.text +' where Name Like :text1 ');
    SQL.Add('And Upper (Bezeichnung) Like Upper (:text2) order by '+ combobox2.Text +'');
    ParamByName('text1').asString := SQLString1;
    ParamByName('t


blabla
end;
in Combobox2.text steht die Feldbezeichnung nach der sortiert werden soll.
wenn Combobox2.text leer ist bekomme ich unexpected end Fehler.
Was muß in combobox2.text stehen damit nicht sortiert wird?

Danke für eure Hilfe.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.330 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: sort by oder nicht sort by

  Alt 7. Mär 2014, 19:55
Du musst prüfen, ob die Eingabe in ComboBox2.Text leer ist oder nicht (oder einen Text "ohne Sortierung" oder so enthält) und in dem Fall auch kein order by hinzufügen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
blutigerAnfänger

Registriert seit: 23. Mär 2010
82 Beiträge
 
#3

AW: sort by oder nicht sort by

  Alt 7. Mär 2014, 20:03
@ jänicke
ja natürlich If then else Prüfung. Warum ich nicht selbst darauf gekommen bin? Danke.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: sort by oder nicht sort by

  Alt 8. Mär 2014, 07:04
Dein Code öffnet SQL-Injection Tür und Tor. Wenn ich als Tabellenname nun eingebe
'DeineTabelle where 1=0; DROP DATABASE DeineDB --'. Und dann ist deine Datenbank weg. Oder deine Tabelle. Oder deine Festplatte. Oder Du hast gerade einen Trojaner downgeloaded. Oder Oder Oder.

Weiterhin würde ich versuchen, die Sortierung in-Memory vorzunehmen, d.h. die Daten in ein Dateset laden und dort sortieren. Einige TQuery-Abkömmlinge können das. Wenn nicht, bleibt noch ein TClientDataset oder ein Memory-Dataset, damit geht das auch sehr einfach.
  Mit Zitat antworten Zitat
blutigerAnfänger

Registriert seit: 23. Mär 2010
82 Beiträge
 
#5

AW: sort by oder nicht sort by

  Alt 11. Mär 2014, 21:18
Dein Code öffnet SQL-Injection Tür und Tor. Wenn ich als Tabellenname nun eingebe
'DeineTabelle where 1=0; DROP DATABASE DeineDB --'. Und dann ist deine Datenbank weg. Oder deine Tabelle. Oder deine Festplatte. Oder Du hast gerade einen Trojaner downgeloaded. Oder Oder Oder.
Mein Gedankengang ist hoffentlich erkennbar. Was schlägst du stattdessen vor?
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#6

AW: sort by oder nicht sort by

  Alt 11. Mär 2014, 21:41
Sorge dafür, das die Combobox nicht editierbar ist (falls sie das nicht schon ist).
Verwende ein TDataset-Derivat, das die Angabe einer Tabelle erlaubt, z.B. TADODataset oder TADOTable, o.ä.

Allerdings sollte es reichen, wenn Du die Combobox sowohl selbst füllst, als auch nicht editierbar machst. Die möglichen Tabellen solltest Du aus der Datenbank lesen können.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#7

AW: sort by oder nicht sort by

  Alt 12. Mär 2014, 00:19
Noch besser ist die Verwendung von SQL Parametern für variable Anteile in der Query. Das geht jedoch nur für "Werte", nicht für Strukturelemente. Wenn das gefragt ist, wären Prepared Statements der bessere Weg. Beim von Furtbichler vogeschlagenen Weg gäbe es zumindest noch die relativ einfache Möglichkeit den Controls mit SendMessage() und WM_SETTEXT einen beliebigen Inhalt unterzujubeln, auch wenn das Control via UI nicht mehr editierbar ist.

Sowohl zu SQL Parametern als auch zu Prepared Statements dürfte sich einiges in der DP finden lassen. (Zumindest zu ersterem, bei PS sollte die jeweilige SQL Server Doku Aufschluss geben.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

AW: sort by oder nicht sort by

  Alt 12. Mär 2014, 01:20
Ich würde mal nicht so oft "blabla" in Quelltexte schreiben. Wo wird denn die Variable SqlString1 überhaupt mit Wert bestückt ? Im "blabla" irgendwo ? Solange das nicht geklärt ist braucht man zumindest nicht über SQL Injections o.ä. zu lamentieren.
Gruß
Hansa
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:04 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