【发布时间】:2023-03-13 18:23:01
【问题描述】:
这是我目前得到的代码:
procedure TfrmLogin.performQuery;
begin
query.SQL.Text := 'SELECT * FROM LoginDatabase';
query.Open;
end;
procedure TfrmLogin.FormCreate(Sender: TObject);
begin
con := TFDConnection.Create(nil);
query := TFDQuery.Create(con);
con.LoginPrompt := false;
con.Open('DriverID=SQLite;Database=C:\Users\katiee\Documents\Embarcadero\' +
'Studio\Projects\ProgramDatabase;');
query.Connection := con;
performQuery;
username := query.FieldByName('Username').AsString;
passcode := query.FieldByName('Passcode').AsString;
end;
procedure TfrmLogin.btnLoginClick(Sender: TObject);
begin
if (edtUsername.Text = username) and (edtPasscode.Text = passcode) then
frmPayInfo.show
else
if MessageDlg('The username or password entered is incorrect.', mtWarning,
[mbOK, mbCancel], 0) = mrCancel then
frmLogin.Close;
end;
现在的代码,因为它不读取所有数据库条目,只允许第一个数据库条目作为正确答案。
我需要能够从数据库中输入用户名和密码的任何正确组合并打开表单。
【问题讨论】:
-
您似乎正在尝试从表中读取所有数据,并使用程序代码查看用户名+密码是否在其中。更好的方法是将值作为参数提供给查询,并且只获取您需要的数据。获取数据库来完成这项工作。不要发送/接收您不需要的数据。当然,正确的建议是不要推出自己的安全性。这绝不是一个好主意。
标签: sql database sqlite delphi-xe8