2012-07-13 2 views
2

Я хотел бы создать тип окна входа в Delphi. К сожалению, я не могу заставить его соответствовать имени пользователя и паролю.Имя пользователя базы данных и пароль в Delphi?

У меня есть базовая база данных .mdb с таблицей Users. В этой таблице есть имя пользователя и пароль. Я хочу, чтобы Delphi проверял имя пользователя и пароль в базе данных, и если он совпадает с именами в блоках редактирования, он переходит к следующей форме или показывает сообщение, иначе ничего не делает. Когда я ввожу в первую строку базы данных, имя пользователя и пароль, я получаю успех, но со вторым - ничего. Я чувствую, что мне нужен способ заставить его перейти к значениям вторых строк и проверить их и так далее. В базе данных также нет связей.

Это мой макет доступа к данным: ADOConnection -> ADOTable -> DataSource

Заранее спасибо!

+0

Вы можете включать в структуру вашего таблицу и код, который вы используете для проверки пользователя и пароля? – RRUZ

+0

вам лучше никогда не хранить простой пароль в db, но используйте хеш с некоторой солью (например, имя пользователя) ... –

+0

У меня возникает идея, что OP может подумать, что ваш хэш с некоторой солью на самом деле был одним из блюд для завтрака , включая картофель. –

ответ

1

Как вы думаете, одним из решений может быть перемещение записи по записи для проверки каждого из них. Пример:

function MatchPass(Table: TADOTable; const Name, Pass: string): Boolean; 
begin 
    Result := False; 
    Table.First; 
    while not Table.Eof do begin 
    if Table.FieldByName('Username').AsString = Name then begin 
     Result := Table.FieldByName('Password').AsString = Pass; 
     Exit; 
    end; 
    Table.Next; 
    end; 
end; 

Можно назвать как:

if MatchPass(ADOTable1, Edit1.Text, Edit2.Text) then 
    .. 


Другим решением может быть, чтобы позволить ADOTable поиск соответствующей записи:

function MatchPass(Table: TADOTable; const Name, Pass: string): Boolean; 
begin 
    Result := Table.Locate('Username;Password', VarArrayOf([Name, Pass]), []); 
end; 
+0

Не лучше просто использовать предложение sql? – RRUZ

+0

@RRUZ - Я не уверен, что у одного или другого будет значительное преимущество. Но у нас уже есть ADOTable, как указано в вопросе. –

+0

Спасибо Sertac! Нет причин, по которым я должен использовать ADOTable вместо ADOQuery. Итак, из любопытства, как выглядит выражение SQL? – coder123

Смежные вопросы