database - 登录显示错误信息

标签 database delphi authentication filter

我需要我的程序从数据库中登录用户。这需要一个潜水员号码(如用户名)和一个已经在数据库中的密码。不幸的是,我现在还不懂 SQL,我宁愿使用一种类似于我在这里所做的技术。我在运行时收到一条错误消息:adotblDiversInfo:无法对已关闭的数据集执行此操作。非常感谢您的提前帮助(: 这是我的代码:

procedure TfrmHomeScreen.btnLogInClick(Sender: TObject);
var
  iDiverNumber : Integer;
  sPassword, sKnownPassword : String;
  bFlagDiverNumber, bFlagPassword, Result : Boolean;
begin
  iDiverNumber := StrToInt(ledDiverNumber.Text);
  sPassword := ledPassword.Text;
  with frmDM do
    adotblDiversInfo.Filtered := False;
    frmDM.adotblDiversInfo.Filter := 'Diver Number' + IntToStr(iDiverNumber);
    frmDM.adotblDiversInfo.Filtered := True;
    if frmDM.adotblDiversInfo.RecordCount = 0 then
      ShowMessage(IntToStr(iDiverNumber) + ' cannot be found')
    else
      begin
        sKnownPassword := frmDM.adotblDiversInfo['Password'];
        if sKnownPassword = sPassword then
          ShowMessage('Login successful')
       else
          ShowMessage('Incorrect password. Please try again');
      end;
end;

最佳答案

您遇到的错误是因为您在尝试访问数据集之前忘记打开它。使用 frmDM.adoTblDiversInfo.Open;frmDM.adoTblDiversInfo.Active := True; 在尝试使用该表之前执行此操作。

如果您稍作更改,您的代码可能会更简单(也更快)。无需过滤整个数据集,只需查看是否可以找到正确的记录即可。

procedure TfrmHomeScreen.btnLogInClick(Sender: TObject);
var
  iDiverNumber : Integer;
begin
  if not frmDM.adoTblDiversInfo.Active then
    frmDM.adoTblDiversInfo.Open;

  iDiverNumber := StrToInt(ledDiverNumber.Text);
  sPassword := ledPassword.Text;
  if frmDM.adoTblDiversInfo.Locate('Diver Number', iDiverNumber, []) the
  begin
    if frmDM.adoTblDiversInfo['Password'] = ledPassword.Text then
      ShowMessage('Login successful')
    else
      ShowMessage('Invalid password. Please try again.');
  end
  else
    ShowMessage(ledDiverNumber.Text);
end;

关于database - 登录显示错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26739650/

相关文章:

c# - 使用 EF 在 db 中建模树状结构

sql - 如何将主键值分配给外键?

delphi - TField.OnGetText 中 'Text' 参数的默认值是多少

asp.net-mvc - Microsoft Owin Facebook 身份验证在 MVC 应用程序中不起作用

mysql - SQL用MYSQL连接来自多个表的数据

sql - 如何检查表上持有哪些锁

delphi - 如何在Delphi中创建声音笔记?

delphi - Delphi中如何定义一个包含其他常量记录的常量记录?具体案例: matrix using vectors

Java登录程序

php - 谷歌登录集成