AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Probleme bei Sql Abfrage
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme bei Sql Abfrage

Ein Thema von badrulecracker · begonnen am 21. Mär 2005 · letzter Beitrag vom 21. Mär 2005
Antwort Antwort
badrulecracker

Registriert seit: 9. Mär 2004
6 Beiträge
 
#1

Probleme bei Sql Abfrage

  Alt 21. Mär 2005, 10:34
Datenbank: Mysql • Version: 4.1 • Zugriff über: Zeos
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
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Probleme bei Sql Abfrage

  Alt 21. Mär 2005, 10:45
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?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
badrulecracker

Registriert seit: 9. Mär 2004
6 Beiträge
 
#3

Re: Probleme bei Sql Abfrage

  Alt 21. Mär 2005, 10:49
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...!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Probleme bei Sql Abfrage

  Alt 21. Mär 2005, 10:57
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.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
badrulecracker

Registriert seit: 9. Mär 2004
6 Beiträge
 
#5

Re: Probleme bei Sql Abfrage

  Alt 21. Mär 2005, 11:01
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
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Probleme bei Sql Abfrage

  Alt 21. Mär 2005, 11:04
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.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:49 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