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