那就是你二个sql没选到数据啊

解决方案 »

  1.   

    首先你要明白ExecuteScalar的用途//获取第一条记录,第一个字段的内容Select count(1) From tb Where 条件//不管条件成不成立,都会有一条记录,一个字段,当然就有数据了Select 字段 From tb Where 条件 //条件成立时返回记录和字段,不成立时没有记录,有字段名,返回的当然是null了Select isnull(Select IsNeedCheck From ..,-1) 
      

  2.   

    Select count(1) From tb Where 条件//不管条件成不成立,都会有一条记录,一个字段,当然就有数据了
    这个是对的,只是数据是0还是大于0的问题。
    但是ol的值是1啊,也就是Select count(1) From tb Where 条件 是取到数据了。
    如果表中记录未变更的话,第二条SQL也是应当取到记录的
      

  3.   

    你好 这条sql在数据库里肯定是可以查询到数据的 而且保证肯定是一行记录
    如图所示
      

  4.   


    你好 这条sql在数据库里肯定是可以查询到数据的 而且保证肯定是一行记录
      

  5.   

    Select count(1) From tb Where 条件//不管条件成不成立,都会有一条记录,一个字段,当然就有数据了
    这个是对的,只是数据是0还是大于0的问题。
    但是ol的值是1啊,也就是Select count(1) From tb Where 条件 是取到数据了。
    如果表中记录未变更的话,第二条SQL也是应当取到记录的
    你好 这条sql在数据库里肯定是可以查询到数据的 而且保证肯定是一行记录
    如图所示
      

  6.   


    你好 这条sql在数据库里肯定是可以查询到数据的 而且保证肯定是一行记录
    关键你这两个方法是怎么调用的,是不是第一个传加密的密码,二第个传明文的密码
      

  7.   

    虽然不影响,但是sqlNeedCheck字符串的赋值很乱。
    楼主还是检查一下传参是否正确吧。
      

  8.   


    你好 这条sql在数据库里肯定是可以查询到数据的 而且保证肯定是一行记录
    关键你这两个方法是怎么调用的,是不是第一个传加密的密码,二第个传明文的密码
    传入的密码肯定是一样的.这条sql拿到数据库执行是没问题的  
    我2个方法写的也是一样的  就是莫名其妙它是空值
      

  9.   

    传入的密码肯定是一样的.这条sql拿到数据库执行是没问题的  
    我2个方法写的也是一样的  就是莫名其妙它是空值
      

  10.   

    IsCheckLogin返回的不是null,或者说不可能是null,真的为空应该返回DbNull.Value,你断点看到的null是因为那行语句被你打断了,未执行才是初始值null,你把断点打到下面一行去,能看到实际返回值,那个返回值转换到Int32时出现问题。
      

  11.   

    如果你单单执行GetNeedCheck,不执行IsCheckLogin会不会出错呢?
      

  12.   

    再说句和你问题无关的话,你还是别用数据库操作的封装类了,遇到问题都不知道怎么去查,不是说别人写的东西就不好,而是你根本就没理解怎么去使用它,封装的方法和使用习惯有关,比如写那个封装类的人,之所以设计了AddParameter方法,说明他喜欢一次操作就实例化一个类对象,而不喜欢共享对象实例,不然上次添加的参数到下次执行的时候仍旧存在,肯定影响执行结果。但是看看你的代码,显然是共享了对象实例,方法内部就没初始化那个DatabaseHelper
      

  13.   

    就是调试的时候,获取到执行的sql,复制到数据库中,执行下,看看有没有数据,数据是什么样子的,相信能够很容易判断出来是什么原因
      

  14.   

    dbHelper这个定义的代码贴上来看看,你上面的方法是存储过程传参,执行没问题,可能就是你下面的参数传的时候出现问题了
      

  15.   

    谢谢大家的帮助  不是本方法的问题  是我上一个方法使用了DbDataReader读取的时候忘记关闭了