C#中如何判断数据库中int字段为Null

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中如何判断数据库中int字段为Null相关的知识,希望对你有一定的参考价值。

数据库中开始有2个任意字段
a b
1 2
2 5
7 4
新增一列c为int类,此时,数据库中c列皆为null
a b c
1 2 null
2 5 null
7 4 null
此时在c#中如何判断c的值为null或不为null的操作。
比如:if(c != null) …… //此时程序会报错 :由于“int”类型的值永不等于“int?”类型的“null”,该表达式的结果始终为“ture”

用Convert.IsDBNull就行了,示例:
while (dr.Read())

dr.GetValues(fieldValues);

for (int fieldCounter = 0; fieldCounter < fieldCount; fieldCounter++)

if (Convert.IsDBNull(fieldValues[fieldCounter]))
fieldValues[fieldCounter] = "NA";

grid.Rows.Add(fieldValues);
参考技术A 直接用空符号“”,或者插入数据的时候如果为null的就给定一个默认值0或者-1,这样更好判断 参考技术B 定义c 的时候这样定义int ?c = null这样是可以的 参考技术C int? c;
if(c.hasvalues)

……
参考技术D SQL语句有个ISNULL函数

如何判断数据库中int型字段为空?

use result select A305 from ABC where A305=' ' 这句SQL文运行结果为什么会有很多0出现在结果栏中,其中A305是int型
谢谢

int为数字类型
这种字段会有个默认值,就是0
有很多人会用int字段来做对比,那么这个字段的值就会有0和1
而在你的语句中,0就是空,但不是null,所以就会这样了
只是不知道你用的是什么数据库,因为很多数据库在条件中加引号就是字符的意思,而数字字段会出错追问

我用的是SQL SERVER2005的数据库 我用is null可以判断为空,但是通常也会存在不输入内容数据库默认数值,所以我想看这种用=‘’来查询;另外想问一下:数据类型 text 和 varchar 在 equal to 运算符中不兼容。 那这两种类型的数据是不是判断为空也是只用isnull来判断?谢谢

追答

可是int类型的字段是有默认值的,又怎么会出现""的情况呢

追问

好的 谢谢。。。另外再问个数据库的更新方面问题 , update test set test.A203=ABC.A203 from test,ABC where test.A100=ABC.A100 and test.A203 is null
是不是当ABC.A203也是null时,就不会执行更新到test.A203里?因为我执行usselect test.* from ABC,test where test.A100=ABC.A100 and test. A203 is null的结果比直接更新的结果数目要多,而且做其他字段更新时也经常会遇到这种情况。。。
谢谢大虾

追答

没太看明白
你条件中,没没说abc.a203为null啊

不知道你这是在什么程序中要使用sql
在定义字段类型时,如果可能,最好是定义默认值,比如首次添加记录时的日期,就可以使用默认值

这样也可有效防止null的存在,便于以后的查询

参考技术A sql server数据库吗?数据库判断为空,是用is null的,如:
select A305 from ABC where A305 is null

以上是关于C#中如何判断数据库中int字段为Null的主要内容,如果未能解决你的问题,请参考以下文章

C#三种判断数据库中取出的字段值是否为空(NULL) 的方法

C#中如何判断一个DateTime类型字段的日期为空?

如何判断一个int类型是不是为空

c#如何将null值附值decimal类型变量

怎么样把NULL值插入到SQL数据库的INT字段(int可为空)

mysql 在值为null的字段插入数据!