procedure TForm1.Button1Click(Sender: TObject);
var
  sqlstr,id,password,aa:string;
begin
  if (trim(edit1.text)<>'') and (trim(edit2.text)<>'') then
  begin
  id:=trim(edit1.text);
  password:=trim(edit2.text);
  sqlstr:='select * from manager where (managerid='''+id+''') and (password='''+password+''')';
  query1.close;
  query1.SQL.Clear ;
  query1.SQL.Add(sqlstr);
  query1.open ;   if (query1.ParamCount >0) then     aa:=query1.ParamByName ('zhiwei').Value
     form1.close   else
      begin
      showmessage('用户名或密码错误!');      end
      end
  else
  showmessage('请输入用户名和密码!');
  end;end.
以上是我的登录程序,但是运行时每次都是显示"用户名或密码错误",但是跟数据库表中值没错啊,大哥大姐帮忙啊!

解决方案 »

  1.   

    用错几个方法:参见以下

       if (query1.RecordCount >0) then //要用RecordCount判断返回的记录数     aa:=query1.FieldByName ('zhiwei').AsString;//用FieldByName返回所需字段,最好用AsXXXX明确指定返回值的类型,防止出现Variant转换错误,另外也提高性能。
         close;//前面不要加Form1,这个坏习惯在以后可能会使你遇到难以调试出的异常。   else
      

  2.   

    楼主注意大小写了没?query1.RecordCount = 0说明没有匹配的记录呀
      

  3.   

    还发现一个错误:为啥 if (query1.RecordCount >0) then 那个块没有begin ... end?
      

  4.   

    试试
    sqlstr:='select * from manager where (rtrim(managerid)='''+id+''') and (rtrim(password)='''+password+''')';
      

  5.   

    试试
    sqlstr:='select * from manager where rtrim(managerid)='''+id+''' and rtrim(password)='''+password+'''';