[Lazarus] SQL select problem

waldo kitty wkitty42 at windstream.net
Tue Nov 20 18:28:24 CET 2012


On 11/20/2012 09:11, Eric Kom wrote:
> On 20/11/2012 15:20, Luk Vandelaer wrote:
>> You don't leave the while loop when you found the correct user.
> Thanks again Luk,
>>
>> For each record there will be a showstring call processed.
>>
>> It should be something like:
>>
>> var found: boolean;
>> ....
>> found := false;
>> while not SQLQueryMySQL.EOF and not found do begin
>> //Retrieved data fields and assigned to a string variables
>> retUsername := SQLQueryMySQL.Fields[0].AsString;
>> retPassword := SQLQueryMySQL.Fields[1].AsString;
>> found := (getUsername = retUsername) AND
>> (getPasswordHash = retPassword);
>> SQLQueryMySQL.Next;
>> end;
>> if found then begin
>> retFullname := SQLQueryMySQL.Fields[2].AsString;
>> ShowString('Retrieving information for: ' + retUsername);
>> StatusBarLogin.Update;
>> sleep(2000);
>> ShowString('Connected to server as: ' + retUsername +
>> ', known as ' + retFullname);
>> end
>> else
>> ShowString('Failed to connect using: ' + getUsername);
> By putting the retFullname := SQLQueryMySQL.Fields[2].AsString; statement after
> the SQLQueryMySQL.Next; statement, this last statement makes the field fullname
> to jump to the next row, by selecting a wrong fullname for the credentials on
> check.

ok... so you only want to jump to the next record if not found, right?


       found := false;
       while not SQLQueryMySQL.EOF and not found do begin
          //Retrieved data fields and assigned to a string variables
          retUsername := SQLQueryMySQL.Fields[0].AsString;
          retPassword := SQLQueryMySQL.Fields[1].AsString;
          found :=  (getUsername = retUsername) AND
             (getPasswordHash = retPassword);
          if not found then SQLQueryMySQL.Next;
         end;
       if found then begin
             retFullname := SQLQueryMySQL.Fields[2].AsString;
             ShowString('Retrieving information for: ' + retUsername);
             StatusBarLogin.Update;
             sleep(2000);
             ShowString('Connected to server as: ' + retUsername +
		', known as ' + retFullname);
       end
       else
             ShowString('Failed to connect using: ' + getUsername);

;)




More information about the Lazarus mailing list