我如何在课堂上使用SQL编码?

时间:2013-09-17 18:22:31

标签: sql delphi class delphi-7

我创建了一个必须使用SQL代码从我的数据库进行验证检查的类,但是当我尝试运行我的程序时,它不使用我的表单中的ADOquery。我试图通过将我的主单元添加到我班级的单元来修复它,但它会给出循环错误。我还试图将Form1添加到用途(这是我的表单的名称,我只有一个表单),但它不理解Form1。如果有人能提供帮助,我们将非常感激。

orait这是我班上的:

procedure TCheckA.CheckIfAdmin;
var iRecordA : Integer;
begin
    qryInfo.Active := False;
    qryInfo.SQL.Clear;
    qryInfo.SQL.Add(' Select [Lid Naam], [Lid Wagwoord], Adminustrateur ');
    qryInfo.SQL.Add(' From [CATSA Lede] ');
    qryInfo.SQL.Add(' Where [Lid Naam] = "'+fgebruikernaam+'"and [Lid Wagwoord] = "'+fpassword+'" and Adminustrateur = True ');
    qryInfo.Active := True;
    iRecordA := qryinfo.recordcount;


 if iRecordA = 1
  then begin
   fAdminAnswer := True;
   end
  else begin
   fAdminAnswer := False;
  end;
end;

然后它通过了这个错误:[Error] IntekenCheck.pas(29): Undeclared identifier: 'qryInfo'

然后,如果我尝试将我的主要单位放在我班级的单位中,如:

unit IntekenCheck;

interface
 uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, Buttons, jpeg, ExtCtrls, XPMan, Grids,
  DBGrids, DB, ADODB, Math, AdminCheck, Chairmin_u{main unit};

然后错误是:[Fatal Error] IntekenCheck.pas(7): Circular unit reference to 'IntekenCheck'

1 个答案:

答案 0 :(得分:1)

将查询传递到您的班级,并在那里使用:

procedure TCheckA.CheckIfAdmin(const Query: TAdoQuery);
begin
  AQuery.Active := False;
  AQuery.SQL.Clear;
  AQuery.SQL.Add(' Select [Lid Naam], [Lid Wagwoord], Adminustrateur ');
  AQuery.SQL.Add(' From [CATSA Lede] ');
  AQuery.SQL.Add(' Where [Lid Naam] = "' + fgebruikernaam +
                 '"and [Lid Wagwoord] = "'+ fpassword + 
                 '" and Adminustrateur = True ');
  AQuery.Active := True;
  fAdminAnswer := (AQuery.RecordCount = 1);
end;

(您还应该更改为使用参数化查询而不是使用+进行连接。它更加安全。此处还有许多与参数化查询和Delphi相关的问题;快速搜索[delphi] parameter query应该找到它们。)