problem mit ausführung einer Tquery in einer klasse
-
hallo und guten tag zusammen. ich programmiere mit einem freund einen kleinen lan-chat und ich schreibe den server. ich bin eigentlich auch schon fertig doch ich wollte den QC mit einer klasse übersichtlicher und schmaler gestalten. die klasse besteht hauptsächlich aus dem alten QC also geh ich davon aus dass syntaktisch alles in ordnung sein muss.
es geht um meine sql-query(TQuery) die mir immer eine execption liefert.
dabei handelt es sich um die methode "login(ansistring,ansistring,*TQuery)" sie enthält die erste mögliche anfrage eines clienten.
QuellCode:AnsiString sql; MyQuery->Close(); MyQuery->SQL->Clear(); sql="SELECT Nick, PW FROM tbuser WHERE Nick = :user AND PW = :password;"; MyQuery->ParamByName("password")->AsString = Pw; MyQuery->ParamByName("user")->AsString = Bn; MyQuery->SQL->Add(sql); MyQuery->Open(); if(MyQuery->RecordCount==1) return "1"; else return "0";
ParamCheck ist true. heißt einmal funktioniert die query zwar aber bei nochmaligem ausführen spuckt das programm: EDatabaseError with message 'AllroundQuery: Parameter'passowrd' not found' aus.(AllroundQuery ist meine Tquery).
Setz ich ParamCheck allerdings auf false wie doch eigentlich richtig sagt mir das programm. EDBEngineError with 'Could not find object.'
ohne parameter hab ichs natürlich auch schon versucht durch das einfügen der zu suchenden begriffe in die SQL mit der der zeile:
sql = "SELECT Nick, PW FROM tbuser WHERE Nick = '"+Bn+"' AND PW = '"+Pw+"';";
aber das ändert nur die exception in:
EDBEngineError with message 'Missing right quote.'ich hoffe es handelt sich nicht um einen grundlegenden fehler oder gar einer auf den niemand eine antwort hat.
vielleicht bringt folgende info nochwas:
-die methode Login() ist eine methode die innerhald einer andern methode verwendet wird.
-sowohl klassendefinition als auch die implementierung befinden sich im header meinem Form1.
-die methode select() die login() enthält und ausführen soll befindet sich in meinem Form1 in einem Thread