![]() |
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:
Beim Starten des Code Abschnittes kommt folgenden Fehlermeldung:
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 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 |
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? |
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...! |
Re: Probleme bei Sql Abfrage
Zitat:
|
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 |
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 18:17 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