存储过程返回布尔值以及C#相关处理
2015-09-14 10:40
465 查看
前段时间有在数据库以及程序之间使用到布尔(bool,Boolean)值的问题。
比如在SQL中,你想判断记录是否存? 通常你会这样写:
View Code
在数据库返回值来看,存储过程只返回数据类型bit了,“1” 和“0”。现在我们在C#程序中应用这个存储过程:
其实,在C#中,数据转换为bool值时,只有"0"转换为false,其它值转换为true。
上面的情况一般均没有什么问题,
再看看,数据库的设计:
这个字段可以允许为空,也就意味着有三个值存储,true,false,null
此时我们在写存储过程时,就需要注意了。我们只需判断NULL空或0值为false的就行了,其它判断为真。
Ok,上面的存储过程,还适合另外一种情形,如使用tinyint。
比如在SQL中,你想判断记录是否存? 通常你会这样写:
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。
相关文章推荐
- C#中Ilist与list的区别小结
- C#datagridview报错
- 探索c#之storm的TimeCacheMap
- 群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法【附C#群蚁算法完整项目代码】
- C#中的try catch 和finally
- C#如何调用REST
- C#删除只读文件或文件夹(解决File.Delete无法删除文件)
- C#反射机制(转)
- 关于C#的静态类和静态构造函数
- C#实现所有经典排序算法
- c#配置文件的简单操作
- C#读写config配置文件
- 在制作水晶报表时遇到此错误未处理System.IO.FileNotFoundException HResult=-2147024894
- 读书心得20150913
- 巧用FileShare解决C#读写文件时文件正由另一进程使用的bug
- C#读取Word模板替换相应的字符串(标签)生成新的Word
- C#内存释放(垃圾回收)
- C#在Winform中改变Textbox高度三种方法
- c#开发安卓学习
- C#中DataGridView控件使用大全