是 用 ADOQuery 组件!!
我用 
ADOQuery.Close;
ADOQuery.sql.clear;
ADOQuery.sql.Add('select * from user_info where user_name=:user_name');
ADOQuery.parameters.ParamByName('user_name').Values:='gushuheng';
ADOQuery.Prepares;
ADOQuery.Open;user_name 为gushuheng 的 在表 user_info 里面是 存在的,但是运行结果却是为空,不知道为什么?? 是不是哪里出了问题!!  请教

解决方案 »

  1.   

    ADOQuery.Close;
    ADOQuery.sql.clear;
    ADOQuery.sql.Add('select * from user_info where user_name=:user_name');
    ADOQuery.parameters.ParamByName('user_name').Value:='gushuheng';
    ADOQuery.Open;
    如果记录存在,不会为空的
      

  2.   

    是不是空格影响用trim()去空格
    如果是sqlserver数据库,列为char型的话!
    'select * from user_info where rtrim(user_name)=:user_name'
      

  3.   

    var
      strSQL,STR:string;
    begin
      STR:='gushuheng';
      strSQL:='select * from user_info where user_name='+'''+STR+'''';
      ADOQuery.Close;
      ADOQuery.sql.clear;
      ADOQuery.sql.Add(str);
      ADOQuery.Open;......
      

  4.   

    单从代码看是没错的,不过还应从具体DBMS分析,比如说是否区分大小写,还有就是你在库中的'gushuheng'和你SQL中的是否一样,也许库中被加了后导空格?
      

  5.   

    现在问题解决了,  我在定义的时候是用的   user_name char(20) not null;
    改成 user_name varchar(20) not null; 运行结果就正确!!! 现在我想是不是ADOQuery.sql.Add('select * from user_info where user_name=:user_name');
    ADOQuery.parameters.ParamByName('user_name').Value:='gushuheng';在传送 查询时  参数是  gushuheng\0!!   而用 char(20) 定义时 里面是
    gushuheng\0\0\0\0\0\0\0\0\0\0\0  !!!   也就是说系统把它初始化为 0 然后在填入gushuheng!!    而 varchar(20) 定义时则没有初始化为0这一点,然后系统是 填入 gushuheng\0  !!!   两者的系统占用 都是 20 个字节!!!!
    请教各位大哥!
      

  6.   

    现在问题解决了,  我在定义的时候是用的   user_name char(20) not null;
    改成 user_name varchar(20) not null; 运行结果就正确!!! 现在我想是不是ADOQuery.sql.Add('select * from user_info where user_name=:user_name');
    ADOQuery.parameters.ParamByName('user_name').Value:='gushuheng';在传送 查询时  参数是  gushuheng\0!!   而用 char(20) 定义时 里面是
    gushuheng\0\0\0\0\0\0\0\0\0\0\0  !!!   也就是说系统把它初始化为 0 然后在填入gushuheng!!    而 varchar(20) 定义时则没有初始化为0这一点,然后系统是 填入 gushuheng\0  !!!   两者的系统占用 都是 20 个字节!!!!
    请教各位大哥!    有人回答 给分啊!!
      

  7.   

    char(20)的话你就要写成这样了
    UserName:='gushuheng';
    SpaceString:='20个空格';
    ADOQuery.Close;
    ADOQuery.sql.Text:='select * from user_info where user_name=:user_name');
    ADOQuery.parameters.ParamByName('user_name').Values:=UserName+Copy(SpaceString,1,20-Length(UserName));
    ADOQuery.Prepares;
    ADOQuery.Open;