转自:http://blog.csdn.net/liuzuofei/archive/2008/01/15/2044744.aspx
ExecuteScalar这个方法本来的目的是只反回数据集的第一行第一列。
但是当表中的记录为空时,没有经验的同志会直接这样做:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
实际这样做是错误的,因为val永远不会==null。
真正的原因是没有区分数据库的null和0记录。
因此正确的做法如下:
object
val
=
cmd.ExecuteScalar();
if (val == System.DBNull.Value) { val = null ; }
if (val == System.DBNull.Value) { val = null ; }
特在此标记一下!