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

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

DECLARE @IsExists BIT = 0

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

或者你可以按照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

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

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

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

再看看,数据库的设计:

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

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

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

最新文章

  1. 在ASP.NET Core使用Middleware模拟Custom Error Page功能
  2. linux系统文件权限
  3. DOM查找元素
  4. 在redhat上搭建redmine
  5. java边界布局管理器
  6. C# 判断一字符串是否为合法数字(正则表达式)
  7. 向Oracle数据库中插入数据出错:ORA-01036 无效的变量名或数据
  8. DHCP服务自动分配IP地址原理
  9. vmware虚拟机下ubuntu 13.04使用zeranoe脚本交叉编译ffmpeg
  10. GroundworkCSS ♥ Tables
  11. 如何成为uber司机,uber司机详细注册流程
  12. 清除浮动的方法 after伪类。
  13. 201521123008《Java程序设计》第11周学习总结
  14. 基于阻塞队列的生产者消费者C#并发设计
  15. Ubuntu基础教程——安装谷歌Chrome浏览器
  16. bzoj 4173 打表???
  17. [Go] Go的WaitGroup计数信号量
  18. js的map遍历和array遍历
  19. 二分法binadySearch的用法
  20. Redis——redis使用redis-dump,redis-load导出导入数据——【三】

热门文章

  1. 修改nw.js的exe文件使其请求管理员权限
  2. InnoSetup 如何获取安装程序的路径?
  3. 作业七:团队项目——Alpha版本冲刺阶段-13
  4. npm穿墙
  5. mac安装redis
  6. 诡异的 未处理的IOErrorEvent 2035
  7. CSS3_02之2D、3D动画
  8. IIS集成模式下,URL重写后获取不到Session值
  9. 【原创】高性能网络编程(二):上一个10年,著名的C10K并发连接问题
  10. jQuery贪吃蛇--jQuery学习