Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Code: Was ist falsch? (https://www.delphipraxis.net/31725-sql-code-ist-falsch.html)

Plague 13. Okt 2004 05:59


SQL Code: Was ist falsch?
 
Hallo,

ich schreibe momentan ein Adressbuch und möchte gerne eine Suchfunktion einbauen, aber egal was ich mit dem SQL Code auch mache, immer kommen fehler. Die normale Abfrage (SELECT * FROM Adressbuch) am Start funktioniert. Was ist hier falsch?

Delphi-Quellcode:
Form1.Frame21.Query1.Close;
Form1.Frame21.Query1.SQL.Clear;
Form1.Frame21.Query1.SQL.Add('SELECT * FROM Adressbuch WHERE Name = ' + Edit1.Text);
Form1.Frame21.Query1.ExecSQL;
Danke
Thomas

Plague 13. Okt 2004 06:17

Re: SQL Code: Was ist falsch?
 
Ich schon wieder :wink:

Also so kommt schon mal keine Fehlermeldung mehr, aber ich bekomme auch nichts ausgegeben... Was kann ich jetzt noch machen?

Delphi-Quellcode:
Form1.Frame21.Query1.Close;
Form1.Frame21.Query1.SQL.Clear;
Form1.Frame21.Query1.SQL.Add('SELECT * FROM Adressbuch WHERE Name like :Suche');
Form1.Frame21.Query1.ParamByName('Suche').AsString := LowerCase(Edit1.Text);
Form1.Frame21.Query1.ExecSQL;
Gruß
Thomas

r_kerber 13. Okt 2004 06:17

Re: SQL Code: Was ist falsch?
 
Delphi-Quellcode:
Form1.Frame21.Query1.SQL.Add('SELECT * FROM Adressbuch WHERE Name = ' + QuotedStr (Edit1.Text));

Form1.Frame21.Query1.ParamByName('Suche').AsString := '%' + LowerCase(Edit1.Text) + '%';

Bernhard Geyer 13. Okt 2004 07:09

Re: SQL Code: Was ist falsch?
 
Zitat:

Zitat von Plague
Ich schon wieder :wink:

Also so kommt schon mal keine Fehlermeldung mehr, aber ich bekomme auch nichts ausgegeben... Was kann ich jetzt noch machen?

Delphi-Quellcode:
Form1.Frame21.Query1.Close;
Form1.Frame21.Query1.SQL.Clear;
Form1.Frame21.Query1.SQL.Add('SELECT * FROM Adressbuch WHERE Name like :Suche');
Form1.Frame21.Query1.ParamByName('Suche').AsString := LowerCase(Edit1.Text);
Form1.Frame21.Query1.ExecSQL;

1, Der Weg über Parameter ist schon mal gut. Damit bist du vor SQL-Injection geschützt
(Bei deinem ersten Versuch wäre ein Wert "''; DROP Database xyz;" in Edit1.Text evtl. sehr problematisch.

2, Für Ergebnismengen mußt Du mit Open bzw. Active := True arbeiten
Delphi-Quellcode:
Form1.Frame21.Query1.Open;
ExecSQL ist für SQL-Anweisungen ohne Ergebnismenge gedacht.

Plague 13. Okt 2004 12:52

Re: SQL Code: Was ist falsch?
 
Hallo,

Delphi-Quellcode:
Form1.Frame21.Query1.Close;
Form1.Frame21.Query1.SQL.Clear;
Form1.Frame21.Query1.SQL.Add('SELECT * FROM Adressbuch WHERE Name like :Suche');
Form1.Frame21.Query1.ParamByName('Suche').AsString := '%' + Quotedstr(Edit1.Text) + '%';
Form1.Frame21.Query1.Open;
trotz deines Ratschlages mit Open bekomme ich nichts ausgegeben.
Wenn ich statt nach dem Namen nach der Telefonnummer suche, funktioniert es. Kann es sein, dass es an den Leerzeichen oder sowas liegt?

Danke
Thomas

Sharky 13. Okt 2004 12:54

Re: SQL Code: Was ist falsch?
 
Hai Plague,

warum setzt Du dein Suchwort denn in ' ' ein?

Plague 13. Okt 2004 12:57

Re: SQL Code: Was ist falsch?
 
@Sharky

Was meinst Du genau?
Ich habe doch lediglich den SQL Code in '' gesetzt. Das Suchwort (Suche) muss man ja in '' setzen, da es sonst nicht funktioniert. Oder? :gruebel:

Plague 13. Okt 2004 13:01

Re: SQL Code: Was ist falsch?
 
Ich bin so doof!

Jetzt weiß ich was Du meinst. Das QuotedStr war falsch...
Jetzt funktioniert es ;)

Danke :)

Sharky 13. Okt 2004 13:02

Re: SQL Code: Was ist falsch?
 
Zitat:

Zitat von Plague
...Das Suchwort (Suche) muss man ja in '' setzen, da es sonst nicht funktioniert. ..

Eigentlich nicht. Das musst Du bei Strings machen wenn Du den SQL-Befehl "von Hand" aufbaust. Aber da Du mit Parametern arbeitest sollte es einfach so gehen:

Delphi-Quellcode:
Form1.Frame21.Query1.Close;
Form1.Frame21.Query1.SQL.Clear;
Form1.Frame21.Query1.SQL.Add('SELECT * FROM Adressbuch WHERE Name like :Suche');
Form1.Frame21.Query1.ParamByName('Suche').AsString := '%' + Edit1.Text + '%';
Form1.Frame21.Query1.Open;


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:52 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-2025 by Thomas Breitkreuz