Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Probleme bei Sql Abfrage (https://www.delphipraxis.net/42578-probleme-bei-sql-abfrage.html)

badrulecracker 21. Mär 2005 09:34

Datenbank: Mysql • Version: 4.1 • Zugriff über: Zeos

Probleme bei Sql Abfrage
 
Guten Morgen,

Tut mir leid für den blöd gewählten Titel, nunja, mir viel nichts besseres ein...
Ich bin gerade dabei ein Programm zu schreiben, bei dem man sich einloggen muss um dann mit einer Datenbank arbeiten zu können. Der Login vorgang funktioniert leider nicht mehr. Komischerweise hat er am Freitag Nachmittag noch funktioniert (wo ich es zuletzt versucht habe).
Hier der Quellcode
Delphi-Quellcode:
Userauth.SQL.Clear;
Userauth.SQL.Text := 'SELECT `Benutzername`,`Passwort` FROM `Benutzer` WHERE `Benutzername` = :usr AND `Passwort` = :pass;';
Userauth.ParamByName('usr').AsString := User.Text;
Userauth.ParamByName('pass').AsString := Pass.Text;
Userauth.Open;
Beim Starten des Code Abschnittes kommt folgenden Fehlermeldung:
Beim Starten von Projekt1.exe ist eine Exception der Klasse EDatabaseError aufgetreten. Meldung: 'Userauth: Das Feld 'id' wurde nicht gefunden' Prozess wurde angehalten. Mit einzelnde Anweisund oder Start fortsetzen.

Nachdem man auf Ok drückt, sieht man im Code unter der Unit ZAbstractRODataset die Zeile 1406:
ColumnList := ConvertFieldsToColumnInfo(Fields);

Das Feld Id in der Tabelle User gibt es aber und es ist auch ein Datensatz drin.
Wenn ich von einer anderen Tabelle eine Abfrage mache, passiert das auch ohne weiteres.
Ich hab jetzt schonmal testweise eine Tabelle Benutzer mit den selben Daten angelegt, und die Abfrage umgeschrieben, aber kein anderes Ergebnis.

Hat da jemand von euch vielleicht eine Idee?

Mfg, brc

Sharky 21. Mär 2005 09:45

Re: Probleme bei Sql Abfrage
 
Hai badruecracker,

eigentlich sollte es gehen. Zumal ja deine abfragen auf andere Tabelle auch gehen.
Eine Frage: Hast Du bei dem ZQuery Userauth auch .ParamCheck := True?

badrulecracker 21. Mär 2005 09:49

Re: Probleme bei Sql Abfrage
 
ja, paramcheck ist auf true...
Was ich auch nicht verstehe ist, dass er von dem Feld id spricht, obwohl es in meiner Abfrage garnicht erwähnt wird...!

Sharky 21. Mär 2005 09:57

Re: Probleme bei Sql Abfrage
 
Zitat:

Zitat von badrulecracker
ja, paramcheck ist auf true...
Was ich auch nicht verstehe ist, dass er von dem Feld id spricht, obwohl es in meiner Abfrage garnicht erwähnt wird...!

Klicke mal mit der rechten Maustaste auf dein ZQuery und lösche alle Einträge im "Feldeditor..." wenn dort etwas steht was bei der Abfrage nicht angevordert wird kommt es auch zu dieser Meldung.

badrulecracker 21. Mär 2005 10:01

Re: Probleme bei Sql Abfrage
 
Ich habs gerade selbst herausgefunden...

es liegt daran, dass ich anstatt userauth.execsql userauth.open genommen habe...

Wahrscheinlich habe ich das am Freitag doch noch geändert ohne es nochmal zu testen.
Ich hatte nämlich hier im Forum gelesen, dass man .open dazu benutzen soll, wenn man Abfragen macht, bei denen man nur was ausliest(select) und .execsql dazu, wenn man etwas verändern will (insert, delete...)

Kann mir nochmal jemand den Unterschied erklären? Ich habe das dann wohl falsch verstanden..

ciao

Edit:
@Sharky:
Das haber ich gerade nochmal probiert mit dem rauslöschen (da standen wirklich ganz viele Felder drin) und dann mit open und es funktioniert :)
Also lag ich doch richtig mit der anwendung von .open und .execsql?

mfg, brc

Sharky 21. Mär 2005 10:04

Re: Probleme bei Sql Abfrage
 
Hmmm...

bei dieser Abfrage wäre das .Open aber richtig und notwendig.

Es ist so wie Du es beschrieben hast. Wen bei einem Query das Du an den Server sendest keine Ergebnissmenge zurück geliefert wird (INSERT, UPDATE, DELTETE, CREATE TABLE usw.) verwendet man .ExecSQL.
Wenn eine Ergenissmenge angfordert wird (SELECT) dann muss .Open verwendet werden.


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