如题:当row["xxx"]=“”的时候 ,row["xxx"] == DBNull.Value的返回值是false,
请问为什么呢。当row["xxx"]为什么的时候row["xxx"] == DBNull.Value值才为真呢
row是什么DataReader吗?DataReader有个IsDBNull方法用来判断数据库返回值是否为null
DataTable没有此方法。判断是否为空对比字符就行了,null的列值ToString后就是空字符串
row["xxx"] .ToString()==""
字符串比较应该使用.Equals,比如DBNull.Value.Equals(row["xxx"])
row["xxx"]=“” 表示 该字段有值,值是空字符串,而DBNull.Value表示数据库中的null,你觉得能相等么?
上半句我看明白了,但是你只给出了一个条件,当row["xxx"]=“”的时候 ,DBNull.Value等于什么呢?如果等于null,返回值就是false啦,
所以你要搞明白当一个变量等于null与等于“”也就是空字符串的区别,第二句我看不明白,如果你第二句的意思是,两个变量都不赋值,那么系统自动认为它是空,自然比较的时候就是真了,希望能对你有所帮助。
当一个变量等于null与等于“”也就是空字符串的区别,两个变量都不赋值,那么系统自动认为它是空,自然比较的时候就是真了,希望能对你有所帮助
这是一个类似于内存指针的问题,DBNull 是没有定义 在内存中不存在 。 “”则在内存中已经定义了一个变量 并且变量指向"" 所以不想等
dbnull.value不是string
所以不能等于“"
好比
int i=1
string j="1"
i==j//这里是true?还是假?