我用Delphi7中的ADO连接数据库来验证用户登录(一个Web程序),以前用的数据库为ACCESS可成功运行,可换用MSSQL数据库后用户验证却无法通过(数据库连接已经成功)。判断用户信息的代码如下:begin
   if strings.count>0 then
   if not ADOTable1.Active then
   ADOTable1.Open;
   ADOTable1.First;
   while not ADOTable1.Eof do
   begin
     if  (ADOTable1.FieldByName('User_Name').asstring=strings.Values['UserName'])/*页面中输入的用户名*/
     and (ADOTable1.FieldByName('User_Password').asstring=strings.Values['Password']) then
     begin
       UserID:=strings.Values['UserName'];
       handled:=true;
     end;
     ADOTable1.Next;
   end
end;
哪位高手可指点一二

解决方案 »

  1.   

    你的MSSQL的数据是从ACCESS导入过来的???根据上面的代码,建议你检查几点情况:1.if strings.count>0 then // 这个strings.count是否于于02.ADOTable1.FieldByName('User_Name').asstring 
    ADOTable1.FieldByName('User_Password').asstring //这两个从表中取得的字段值,是否有空格之类的字符如可以这样写if (Trim(ADOTable1.FieldByName('User_Name').asstring)=strings.Values['UserName'])/*页面中输入的用户名*/
    and (Trim(ADOTable1.FieldByName('User_Password').asstring)=strings.Values['Password'])
     then
    ...
      

  2.   

    谢谢你!问题已经解决了是少了Trim的问题。我想请问你Trim具体有什么用处,MSSQL的数据表是我新建的呀,没有空格之类的字符啊。为什么换个数据库就得用Trim(不好意思啊我是个新手)
      

  3.   

    Trim 是去掉字符串首、尾的控制字符、空格等字符
    相应的还有lefttrim,righttrim,>>MSSQL的数据表是我新建的呀,没有空格之类的字符啊你的字段类型是怎么设计的呀,另外你的表中的字段数据是怎么输入的,是从access导入的?
    像这种,字段值后边出现空格的情况,在转换数据库是有可能出现的。解决办法嘛,看情况了,比较直接的方法是在SQL中建立另一个相同结构的表,手工输入一下数据,看是否还有空格?没有的话,就删除原来的表,用新的表代替试试;