小弟乃一DELPHI新手,现遇到一个Paradox数据的登陆验证问题。
我想做个基于Paradox的密码验证登陆,但苦于SQL语言不是很会,一直不得其解,源代码如下:unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XPMan, ComCtrls, DB, DBTables;type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Button2: TButton;
    Label2: TLabel;
    Button1: TButton;
    XPManifest1: TXPManifest;
    TabControl1: TTabControl;
    Edit2: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Query1: TQuery;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementationuses Unit2,Unit3;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
   if edit2.text='' then
   showmessage('请输入用户名!')
   else
      begin
      if edit1.text='' then
      showmessage('请输入密码!')
      else
           begin
           Query1.Close;
           Query1.SQL.Clear;
           Query1.SQL.Add('select USER from KPWD where USER=edit2.text');
           Query1.Open;
           if  Query1.SQL.QuoteChar <> 'edit2.text'   then
              begin
              showmessage('用户名有误.请确认!')
              end
           else
                begin
                Query1.Close;
                Query1.SQL.Clear;
                Query1.SQL.Add('setect PWD from KPWD where USER=:edit2.text and PWD=:edit1.text');
                Query1.Open;
                if  Query1.SQL.QuoteChar <> 'edit1.text'   then
                     begin
                     showmessage('密码有误.请确认!')
                      end
                else
                     begin
                     form1.Hide;
                     form2.Show;
                     end
           end
      end
   end
end;procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Close;
end;end.程序运行后,输入用户名跟密码登陆就出错,错误信息为:
“工程XXX检测到错误类EDBEngineError,错误信息‘Capability not supported.’程序中止,使用单步或运行继续运行。”还有就是,我的数据库加密的,如何在代码里加上数据库的密码连接?
渴求各位的帮助,小弟感激不尽!

解决方案 »

  1.   

              Query1.SQL.Clear; 
              Query1.SQL.Add('select USER from KPWD where USER=edit2.text');        //  <--
              Query1.Open; 
              if  Query1.SQL.QuoteChar <> 'edit2.text'  then 
                  begin 
                  showmessage('用户名有误.请确认!') 
      

  2.   

              Query1.SQL.Clear; 
              Query1.SQL.Add('select USER from KPWD where USER=edit2.text');        //  <-- 错了          Query1.Open; 
              if  Query1.SQL.QuoteChar <> 'edit2.text'  then 
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, XPMan, ComCtrls, DB, DBTables;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Label1: TLabel;
        Button2: TButton;
        Label2: TLabel;
        Button1: TButton;
        XPManifest1: TXPManifest;
        TabControl1: TTabControl;
        Edit2: TEdit;
        Label3: TLabel;
        Label4: TLabel;
        Query1: TQuery;
        procedure Button2Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementationuses Unit2,Unit3;
    {$R *.dfm}
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if edit2.text='' then
      showmessage('请输入用户名!')
      else
          begin
          if edit1.text='' then
          showmessage('请输入密码!')
          else
              begin
              Query1.Close;
              Query1.SQL.Clear;
              Query1.SQL.Add('select USER from KPWD where USER='+ QuotedStr(edit2.text));
              Query1.Open;
              if  Query1.FieldByName('USER ').AsString <> edit2.text  then
                  begin
                  showmessage('用户名有误.请确认!')
                  end
              else
                    begin
                    Query1.Close;
                    Query1.SQL.Clear;
                    Query1.SQL.Add('setect PWD from KPWD where USER='+QuotedStr(edit2.text) + ' and PWD=' + QuotedStr(edit1.text));
                    Query1.Open;
                    if  Query1.RecordCount = 0 then
                        begin
                        showmessage('密码有误.请确认!')
                          end
                    else
                        begin
                        form1.Hide;
                        form2.Show;
                        end
              end
          end
      end
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
    form1.Close;
    end;end. 看来楼主一点基础都没有,还要努力了!
      

  4.   

     Query1.SQL.Add('select USER from KPWD where USER='''+edit2.text+'''');        
      

  5.   

    按照SmallHand的指点修改后,运行还是会出现错误:
    “工程XXX检测到错误类EDBEngineError,错误信息‘Capability not supported.’程序中止,使用单步或运行继续运行。”顺便说下,我的数据库是加密的,在源代码里加上连接数据库密码的语句是什么?
      

  6.   

    strDir:=paradox数据库路径,如d:\data
    adoConnDb.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'
        +'User ID=Admin;Data Source='+strDir+';'
        +'Mode=Share Deny None;Extended Properties=paradox 7.x;'
        +'Jet OLEDB:System database="";Jet OLEDB:Registry Path="";'
        +'Jet OLEDB:Database Password=jIGGAe;Jet OLEDB:Engine Type=83;'//jIGGAe为万能密码,或你自己的
        +'Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;'
        +'Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";'
        +'Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;'
        +'Jet OLEDB:Don''''t Copy Locale on Compact=False;'
        +'Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';