ExecuteScalar()方法如果没得到数据,值是 DBNull.Value ,而不是null如果table表中的a是null值,则应该用DBNull.Value来判断:string sql = "select a from table where id=1";object o = Dbl.CreateCommand().CreateSqlScalar(sql); //正确 if (o == DBNull.Value) { toSign(uid); return "1"; }//错误: 因为永远不会执行该句if(o==null){... ... }//返回的各种值:
select 1 这样返回的object是 1 select null 这样返回的是DBNull.Value selectisnull(null,1) 返回的是 1 select top 0id from table1 这样返回的值是null selectisnull(id,0) from table1 where 1=0 返回的值是null