Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Sql Selcet fehler aber wo ? (https://www.delphipraxis.net/23877-sql-selcet-fehler-aber-wo.html)

Zephit 11. Jun 2004 08:56


Sql Selcet fehler aber wo ?
 
Hallo :-D


Loginquery.SQL.Clear;
loginquery.SQL.Text:='Select ID FROM USER_TABELLE WHERE USERNAME='+ ed_username.Text +' AND PASSWORT='+ ed_Passwort.Text +'';
Loginquery.Open;

wenn ich das ausführe kommt 2 parameter wurden erwarte aber zuwenig übergeben.

Was ist Falsch


MFG...

Alfons_G 11. Jun 2004 09:12

Re: Sql Selcet fehler aber wo ?
 
SQL erwartet Strings in einfachen Anführungszeichen - genauso wie Delphi. Du solltest es also so machen:
Delphi-Quellcode:
Loginquery.SQL.Clear;
loginquery.SQL.Text:='Select ID FROM USER_TABELLE WHERE USERNAME='+ QuotedStr(ed_username.Text) +' AND PASSWORT='+ QuotedStr(ed_Passwort.Text) +'';
Loginquery.Open;
Dein SQL-String wird dann so übergeben:
SQL-Code:
Select ID FROM USER_TABELLE WHERE USERNAME='User' AND PASSWORT='Password'
Dann sollte es klappen.
Du kannst zwar auch Anführungzeichen manuell zufügen, aber Vorsicht: Wenn der Anwender in eines der Felder ein einfaches Anführungszeichen eingibt, bekommst Du dann einen SQL-Fehler, bzw. unter Umständen ist sogar die berüchtigte "SQL-Injection" möglich, d.h. die manuelle Eingabe von manipuliertem SQL-Code. Mit der Funktion QuotedStr werden dagegen alle in der Eingabe vorhandenen Anführungszeichen durch Verdoppelung entschärft.

:coder:

Zephit 11. Jun 2004 09:20

Re: Sql Selcet fehler aber wo ?
 
Ohh danke das scheint zu funktionieren doch jetze kommt eine andere Fehlermeldung!

Das Feld USERNAME wurde nicht gefunden! Allerdings wenn ich nur selcet *from USER_TABELLE mache funtkioniert es einwandfrei und die schreibweise von Username ist korrekt!

Zephit 11. Jun 2004 09:26

Re: Sql Selcet fehler aber wo ?
 
Habe gerade selbst gebastelt und wenn ich
ID durch * ersetze funktioniert es aber warum ?

loginquery.SQL.Text:='Select * FROM USER_TABELLE WHERE USERNAME='+ QuotedStr(ed_username.Text) +' AND PASSWORT='+ QuotedStr
(ed_Passwort.Text) +'';

r_kerber 11. Jun 2004 09:32

Re: Sql Selcet fehler aber wo ?
 
Das ist merkwürdig. Welche DB verwendest Du?

Zephit 11. Jun 2004 09:48

Re: Sql Selcet fehler aber wo ?
 
Acsess und id ist mein Primärschlüssel !!

r_kerber 11. Jun 2004 09:54

Re: Sql Selcet fehler aber wo ?
 
Das sollte eigentlich gehen. Versuche doch mal folgendes. Schreibe doch mal vor ID den Tabellennamen (mit Punkt getrennt) und setze auch mal "spaßeshalber" beide Teile (vor und nach dem Punkt) jeweils in "". Access hat bekannterweise ein paar Macken bei SQL-Befehlen.

Eisenherz 11. Jun 2004 10:07

Re: Sql Selcet fehler aber wo ?
 
Man sollte nach Möglichkeit nie Namen für Spalten wählen, die für SQL Schlüsselwörter sind. USERNAME dürfte ein solches Schlüsselwort sein. Ich hatte einmal ein ähnliches Problem, weil ich einer Spalte den Namen "TEXT" gegeben habe.


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