我在SQLServer2000中表中有个用户密码表,有三个属性:ID,PASSWD和AUTHORITY
他们都为CHAR类型,在登陆界面上有一个T_user通过ADOConnection连接到数据库表中,代码如下:
if MD.T_user.RecordCount=1  then begin
   if MD.T_user.FieldByName('PASSWD').AsString=i_passwd.Text  then
  begin
   if MD.T_user.FieldByName('AUTHORITY').AsString='1' then 
     begin
    Form1.Hide;
    liu.show;
   end
   else
   Application.MessageBox('请选择合适的用户!','用户权限错误',MB_OK);
 end
 else
   Application.MessageBox('请确认密码','密码不匹配',MB_OK);
 end
 else
 Application.MessageBox('请确认用户名是否正确!','无此用户',MB_OK);
end;
          
按理说数据库是CHAR,在界面输入是应该没问题,可我每次运行时不能登陆(只要用户名正确,无论输入什么密码,即使是正确的,也提示密码错误。如果用户名不正确,还可以提示),我把数据库里的数据类型都改为INT型后,就可以登陆了。不知道是CHAR时不能登陆是错在哪里?还请高手指教!!

解决方案 »

  1.   

    是不是字段的内容中有空格???一般CHAR都会这样!!!加上一个Trim试一试!!!
      

  2.   

    首先,保证库表中的三个字段没有NULL,其次,用trim保证无占位空格,因为char型是不可伸展的,所以当定义char(10)而你的数据只有5位时,这个字段值在数据库中的长度仍然是10。
      

  3.   

    类似于用户、密码等不定长度的字段最好定义成varchar或nvarchar,
    一般要去掉前后空格用Trim、Trimleft、TrimRight,当然,密码是空格也应允许,所以,密码框还是不能去掉空格的。
      

  4.   


    VarChar然后用Trim去掉前后空格
      

  5.   

    呵呵
    楼上的几位说的都不错,用了trim后就搞定了
    think you!!!