ExecuteScalar返回是null,上一条语句还好好的

Persistence_x 2014-01-26 10:56:21

请大神帮忙看一下 我执行GetNeedCheck方法oo的返回值是null,而我IsCheckLogin方法的o1返回值就是1,
感觉莫名其妙的
我是引用网上的一个dll,
就是下面这个通用连接类:
http://blog.csdn.net/oneil_sally/article/details/2861506
...全文
252 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Persistence_x 2014-01-26
  • 打赏
  • 举报
回复
引用 9 楼 dianjixue1 的回复:
虽然不影响,但是sqlNeedCheck字符串的赋值很乱。 楼主还是检查一下传参是否正确吧。
传入的密码肯定是一样的.这条sql拿到数据库执行是没问题的 我2个方法写的也是一样的 就是莫名其妙它是空值
Persistence_x 2014-01-26
  • 打赏
  • 举报
回复
引用 8 楼 liuchaolin 的回复:
[quote=引用 6 楼 xiaohuaidan1988 的回复:] [quote=引用 1 楼 bdmh 的回复:] 那就是你二个sql没选到数据啊
你好 这条sql在数据库里肯定是可以查询到数据的 而且保证肯定是一行记录 [/quote] 关键你这两个方法是怎么调用的,是不是第一个传加密的密码,二第个传明文的密码[/quote] 传入的密码肯定是一样的.这条sql拿到数据库执行是没问题的 我2个方法写的也是一样的 就是莫名其妙它是空值
dianjixue1 2014-01-26
  • 打赏
  • 举报
回复
虽然不影响,但是sqlNeedCheck字符串的赋值很乱。 楼主还是检查一下传参是否正确吧。
md5e 2014-01-26
  • 打赏
  • 举报
回复
引用 6 楼 xiaohuaidan1988 的回复:
[quote=引用 1 楼 bdmh 的回复:] 那就是你二个sql没选到数据啊
你好 这条sql在数据库里肯定是可以查询到数据的 而且保证肯定是一行记录 [/quote] 关键你这两个方法是怎么调用的,是不是第一个传加密的密码,二第个传明文的密码
Persistence_x 2014-01-26
  • 打赏
  • 举报
回复
引用 4 楼 dianjixue1 的回复:
[quote=引用 3 楼 liuchaolin 的回复:] 首先你要明白ExecuteScalar的用途//获取第一条记录,第一个字段的内容 Select count(1) From tb Where 条件//不管条件成不成立,都会有一条记录,一个字段,当然就有数据了 Select 字段 From tb Where 条件 //条件成立时返回记录和字段,不成立时没有记录,有字段名,返回的当然是null了 Select isnull(Select IsNeedCheck From ..,-1)
Select count(1) From tb Where 条件//不管条件成不成立,都会有一条记录,一个字段,当然就有数据了 这个是对的,只是数据是0还是大于0的问题。 但是ol的值是1啊,也就是Select count(1) From tb Where 条件 是取到数据了。 如果表中记录未变更的话,第二条SQL也是应当取到记录的[/quote] 你好 这条sql在数据库里肯定是可以查询到数据的 而且保证肯定是一行记录 如图所示
Persistence_x 2014-01-26
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
那就是你二个sql没选到数据啊
你好 这条sql在数据库里肯定是可以查询到数据的 而且保证肯定是一行记录
Persistence_x 2014-01-26
  • 打赏
  • 举报
回复
引用 3 楼 liuchaolin 的回复:
首先你要明白ExecuteScalar的用途//获取第一条记录,第一个字段的内容 Select count(1) From tb Where 条件//不管条件成不成立,都会有一条记录,一个字段,当然就有数据了 Select 字段 From tb Where 条件 //条件成立时返回记录和字段,不成立时没有记录,有字段名,返回的当然是null了 Select isnull(Select IsNeedCheck From ..,-1)
你好 这条sql在数据库里肯定是可以查询到数据的 而且保证肯定是一行记录 如图所示
dianjixue1 2014-01-26
  • 打赏
  • 举报
回复
引用 3 楼 liuchaolin 的回复:
首先你要明白ExecuteScalar的用途//获取第一条记录,第一个字段的内容 Select count(1) From tb Where 条件//不管条件成不成立,都会有一条记录,一个字段,当然就有数据了 Select 字段 From tb Where 条件 //条件成立时返回记录和字段,不成立时没有记录,有字段名,返回的当然是null了 Select isnull(Select IsNeedCheck From ..,-1)
Select count(1) From tb Where 条件//不管条件成不成立,都会有一条记录,一个字段,当然就有数据了 这个是对的,只是数据是0还是大于0的问题。 但是ol的值是1啊,也就是Select count(1) From tb Where 条件 是取到数据了。 如果表中记录未变更的话,第二条SQL也是应当取到记录的
md5e 2014-01-26
  • 打赏
  • 举报
回复
首先你要明白ExecuteScalar的用途//获取第一条记录,第一个字段的内容 Select count(1) From tb Where 条件//不管条件成不成立,都会有一条记录,一个字段,当然就有数据了 Select 字段 From tb Where 条件 //条件成立时返回记录和字段,不成立时没有记录,有字段名,返回的当然是null了 Select isnull(Select IsNeedCheck From ..,-1)
dianjixue1 2014-01-26
  • 打赏
  • 举报
回复
IsNeedCheck为null值?
bdmh 2014-01-26
  • 打赏
  • 举报
回复
那就是你二个sql没选到数据啊
Persistence_x 2014-01-26
  • 打赏
  • 举报
回复
谢谢大家的帮助 不是本方法的问题 是我上一个方法使用了DbDataReader读取的时候忘记关闭了
Regan-lin 2014-01-26
  • 打赏
  • 举报
回复
dbHelper这个定义的代码贴上来看看,你上面的方法是存储过程传参,执行没问题,可能就是你下面的参数传的时候出现问题了
小猪八Q 2014-01-26
  • 打赏
  • 举报
回复
就是调试的时候,获取到执行的sql,复制到数据库中,执行下,看看有没有数据,数据是什么样子的,相信能够很容易判断出来是什么原因
qldsrx 2014-01-26
  • 打赏
  • 举报
回复
再说句和你问题无关的话,你还是别用数据库操作的封装类了,遇到问题都不知道怎么去查,不是说别人写的东西就不好,而是你根本就没理解怎么去使用它,封装的方法和使用习惯有关,比如写那个封装类的人,之所以设计了AddParameter方法,说明他喜欢一次操作就实例化一个类对象,而不喜欢共享对象实例,不然上次添加的参数到下次执行的时候仍旧存在,肯定影响执行结果。但是看看你的代码,显然是共享了对象实例,方法内部就没初始化那个DatabaseHelper
md5e 2014-01-26
  • 打赏
  • 举报
回复
如果你单单执行GetNeedCheck,不执行IsCheckLogin会不会出错呢?
qldsrx 2014-01-26
  • 打赏
  • 举报
回复
IsCheckLogin返回的不是null,或者说不可能是null,真的为空应该返回DbNull.Value,你断点看到的null是因为那行语句被你打断了,未执行才是初始值null,你把断点打到下面一行去,能看到实际返回值,那个返回值转换到Int32时出现问题。

110,565

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧