技术成就梦想

知道用户需求,做到专注!c#,donet,Frameworks,UML,面向对象,设计模式!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

判断ExecuteScalar()是否返回结果

Posted on 2008-09-25 02:20  我不是高手  阅读(453)  评论(0编辑  收藏  举报

ExecuteScalar()返回的是首行首列的值,一般用于执行这类查询

SELECT COUNT(*)FROM TABLE

返回的类型是 OBJECT,如果数据库中没有任何记录时,如何判断呢?以下是方案:

其一、调用Convert的IsDBNull来判断
    object objResult=tempCmd.ExecuteScalar();
     if(objResult!=null && Convert.IsDBNull(objResult))

其二,改变sql语句利用sql中的isnull函数,如下
"select isnull(max(id),0) from employees"如果为空就返回0这个值

这里一个小技巧就是用max来得到值null,因为isnull是当值为null时候触发的,没有记录时候用max就可以将值变为null

另外可以 通过ExecuteNonQuery() 返回一个Int,表示受影响的行数,只对insert,delete,update返回受影响行数
用这个是否为0来判断(这个方法没有试验过)

如果是Access的话,     if(objResult.ToString() != ""),可能要这么判断才对。我试了下,是这样。