为了账号安全,请及时绑定邮箱和手机立即绑定

存储过程返回布尔值以及C#相关处理

标签:
C#

前段时间有在数据库以及程序之间使用到布尔(bool,Boolean)值的问题。

比如在SQL中,你想判断记录是否存? 通常你会这样写:

DECLARE @IsExists BIT = 0IF EXISTS(SELECT TOP 1 1  FROM [dbo].[SixSResponsiblePerson] WHERE [SixS_nbr] = @SixS_nbr AND [UsersId] = @UsersId)    SET @IsExists = 1SELECT @IsExists

View Code


或者你可以按照Insus.NET的习惯写法:

SELECT CASE WHEN EXISTS(SELECT TOP 1 1 FROM [dbo].[SixSResponsiblePerson] WHERE [SixS_nbr] = @SixS_nbr AND [UsersId] = @UsersId )THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END

View Code

 
在数据库返回值来看,存储过程只返回数据类型bit了,“1” 和“0”。现在我们在C#程序中应用这个存储过程:

其实,在C#中,数据转换为bool值时,只有"0"转换为false,其它值转换为true。

 上面的情况一般均没有什么问题,

再看看,数据库的设计:

 

这个字段可以允许为空,也就意味着有三个值存储,true,false,null

此时我们在写存储过程时,就需要注意了。我们只需判断NULL空或0值为false的就行了,其它判断为真。

 

Ok,上面的存储过程,还适合另外一种情形,如使用tinyint。

 

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消