procedure TLoginForm.LoginButtonClick(Sender: TObject);
var
  host, username,passwd,sql :String;
  ssql :TStrings;
begin
  host := 'HostName='+DataSysComB.Text;
  sql :='select * from user_login';
//登陆校验
    //动态绑定hostIP
  ssql :=Tstringlist.Create;
  ssql.Add('DriverName=MySQL');
  //ssql.Add('HostName=localhost');
  ssql.Add(host);
  ssql.Add('Database=va');
  ssql.Add('User_Name=root');
  ssql.Add('Password=');
  ssql.Add('BlobSize=-1');
  ssql.Add('ErrorResourceFile=');
  ssql.Add('LocaleCode=0000');  DMdata.avConnection.Params :=ssql;
  DMdata.avConnection.Connected :=true;
  DMdata.LoginQuery.SQLConnection :=DMdata.avConnection;
  Dmdata.LoginQuery.Close;
  DMdata.LoginQuery.SQL.Add(sql);
  DMdata.LoginQuery.Open;
  if DMdata.LoginQuery.FieldByName('UserName').AsString =UserNameEdit.Text then
    begin
      showmessage('ok');    end
  else
      showmessage('false');按第一次时候可以验证正常,但以后就有问题啦,不知道怎么搞.谢谢大家帮忙.

解决方案 »

  1.   

    帮忙啊,我很菜,现在要搞项目,也刚学Delphi.........散分.
      

  2.   

    你的ssql需要清空一下,否则第二次点击就回出现重复了!
      

  3.   

    在你用完了ssql后,应该ssql.clear一下
      

  4.   

    不行啊,在 if DMdata.LoginQuery.FieldByName('UserName').AsString =UserNameEdit.Text then
        begin
          showmessage('ok');
        ssql.Clear;
        
        end
      else
          showmessage('false');
         ssql.Clear;
    都不行..........
      

  5.   

    代码中的
    Dmdata.LoginQuery.Close;
    DMdata.LoginQuery.SQL.Add(sql);改为:
    Dmdata.LoginQuery.Close;
    Dmdata.LoginQuery.Clear;
    DMdata.LoginQuery.SQL.Add(sql);最后别忘了:ssql.free;
      

  6.   

    to  wwwxing(孤独的海洋,蓝色的月光) 
    Dmdata.LoginQuery.Clear;//此方法找不到?谢谢回复.
      

  7.   

    sorry,
    应该是Dmdata.LoginQuery.SQL.Clear;  :)
    你再试试。
      

  8.   

    点第二下时候
    同样有异常抛出,
    avConnection: Cannot perform this operation on an open connection. 谢谢.
      

  9.   

    DMdata.avConnection.Connected :=false;
      
      DMdata.avConnection.Params :=ssql;
      DMdata.avConnection.Connected :=true;
      DMdata.LoginQuery.SQLConnection :=DMdata.avConnection;
      
      Dmdata.LoginQuery.Close;
      Dmdata.LoginQuery.SQL.Clear;
      DMdata.LoginQuery.SQL.Add(sql);
      DMdata.LoginQuery.Open;最好加上Try ..Except..什么的。
    再有错就加断点跟一下再哪出错的。
      

  10.   

    我刚学Delphi 不会跟踪错误,Except里面写什么好?
    还有我猜[是第一次连接已经有了,第二次再连接的时候以有连接没有释放所以有冲突,那怎么释放连接同时可使其连接也是动态生成,令我费解]非常感谢 wwwxing(孤独的海洋,蓝色的月光) ( ) 你的回复.希望多多跟你学习.
      

  11.   

    加上
    try
    ...
    except
      application.MessageBox('数据库连接错误!','登录失败!',MB_OK);
    end;
    而且要用Dmdata.LoginQuery.SQL.Clear; 清除一下
      

  12.   

    代码已经帮你改过了呀,没注意到吗?添加了一句
    DMdata.avConnection.Connected :=false;实际上你像是犯了重复连接的错,第二次连接时应把上次的连接关闭。
    顺便说一句你这段程序的结构不行。异常处理Try.. Except..你按F1看看帮助,有现成的例子和用法,
    程序的调式是基本的操作,任何参考书都有的。遇到问题自己多琢磨,多看帮助和资料,只有自己亲手解决的才提高的快,
    别人帮你的,你可能改得快学得快但也忘得快。顺便调查一下你现在上班了吗?在哪儿?你那儿的程序员一般能拿多少钱(水平一般的)?
      

  13.   

    to  wwwxing(孤独的海洋,蓝色的月光) 
    谢谢您的提醒,我在烦恼中呢,刚进公司做了一个java的小项目,现在又上马搞Delphi,只好硬上,以前是搞过VB但Delphi还是头一次,边学边做,需求分析也要自己来代码界面不用说都是一个人做D.
    现在薪水1.7->转正后2.5.按提成.