日期:2014-05-17  浏览次数:20837 次

如何区分SqlCommand .ExecuteScalar()的值
ExecuteScalar()主要执行返回单一值的查询。

那我想问,如何区分,此方法是没有获取到值呢,还是获取到的值是空

比如:
SELECT 邮箱 FROM 会员信息 WHERE 用户名='张三'

如果ExecuteScalar()方法的结果为空,到底是没有张三这个人呢,还是张三没有邮箱

------解决方案--------------------
SELECT count(邮箱) FROM 会员信息 WHERE 用户名='张三'
返回1就是有这个人
------解决方案--------------------
cmd.CommondText="SELECT 邮箱 FROM 会员信息 WHERE 用户名='张三'";
object res=cmd.ExecuteScalar();
if(res==null 
------解决方案--------------------
 res==System.DBNull.Value)
   MessageBox("张三的邮箱为空!");
else
   MessageBox("张三的邮箱是:" + res.ToString());
------解决方案--------------------
如果查不到,好像是返回null,也有可能是返回DBNull,你两个都判断就行了,

改一下楼上的代码:

object res=cmd.ExecuteScalar();
 if(res==null 
------解决方案--------------------
 res is DBNull)
{
}
else

{
}

------解决方案--------------------
没有记录是null, 有记录字段是null值返回DBNull.Value