就教你俩招;
1。数据库设计
字段 是char 则是固定长度
username char(10);select * from user where username='牛虻' 是找不到纪录的要
select * from user where username='牛虻          '才行;2 不要用recordcount 你可能永远只能取到-1;
eof = bof
isemperty 
都可以3open; 前一定要 close;
@username  varchar(34),
@passwd  varchar(34);

解决方案 »

  1.   

    你用parambyname('@username').value:=TRIM(edit1.text);
        parambyname('@passwd').value:=TRIM(edit2.text);
    保证可以。
      

  2.   

    2 不要用recordcount 你可能永远只能取到-1;
    eof = bof
    isemperty 
    都可以怎么用呢?
      

  3.   

    select * from user where username='牛虻' 是找不到纪录的要
    select * from user where username='牛虻          '才行;为什么??
      

  4.   

    eof = bof
    isemperty 
    if sp.eof=sp.bof then 没找到
    if sp.isemperty then  没找到
      

  5.   

    newyj(我是老旧(决非老舅),我还不到100岁) 
    是char(10),还是varchar(10)?
    偶不想在''里留空,那一种方法不用指定长度?/if sp.eof=sp.bof then 没找到
    这句什么意思?sp的eof=sp的bof,不明白这样比较什么?
      

  6.   

    这样的比较是为了查明数据库是否为空
    (没有记录就会出现表首bof=表尾eof情况)
    用recordcount确实不太好使好象是bug
      

  7.   

    bug?无奈
    老鱼
    偶这样行吗:
    偶用户名查找密码
    如果返回的密码等于edit中输入的密码
    那么……
      

  8.   

    create table pass(
      username varchar(20),--动态长度
      passwd varchar(20))
      

  9.   

    --//你的存储过程如果不用到3层一点意义也没有 ,
    --//看我的
    CREATE PROCEDURE login
    @Ret integer output,
    @username  varchar(20),
    @passwd  varchar(20)
    as 
    select * from  pass
      where  username = @username and  passwd  = @passwd
    if @@ROWCOUNT = 0
      set @Ret=1
    else
      set @ret=0  
      

  10.   

    var
      sp:TStoredProc;with sp do
    begin
      close;
      parambyname('@username').asstring:=edit1.text;
      parambyname('@passwd').asstring:=edit2.text;
      ExecProc;
      if parambyname('@Ret').asinteger =0 then 'ok'
       else 'error'
    end;
      

  11.   

    关键是1+1<>2
    除了bug,没治了偶试试