对数据库表执行select语句,表中为null时会提示NulReferenceException
   我设置的语句为
             sqlconnpro.Open();
            SqlCommand myCommand = new SqlCommand();
            myCommand.CommandText = sqlcommandtxt;
            myCommand.Connection = sqlconnpro.conn;
            sqlconnpro.Close();
            return myCommand.ExecuteScalar().ToString();
   最后一行就会提示NulReferenceException错误,改称try,catch语句细节问题弄不好,总是出错,
   哪位高手可以指点一二。。不胜感激

解决方案 »

  1.   

    先判断是否为空:
    object o = myCommand.ExecuteScalar();
    if (o==DBNull.Value)
    {
    ...
    }
      

  2.   

    object o = myCommand.ExecuteScalar(); 
    return o == null ? string.Empty : o.ToString();
      

  3.   


    return   myCommand.ExecuteScalar()==null?string.Empty:myCommand.ExecuteScalar().ToString(); 
      

  4.   

    如果查询结果没有值 (比如 SELECT * FROM Table1 WHERE 1=2) 则返回值是 null ;
    如果查询结果有空值(比如 SELECT NULL )则返回值是DBNull.Value .所以要2个都判断, 楼上各位都只判断了一个.
      

  5.   


    return   myCommand.ExecuteScalar()==null?string.Empty:myCommand.ExecuteScalar().ToString(); 上面的写法不推荐,因为执行了两次ExecuteScalar(),资源和效率上都是浪费。下面这个可以。object o = myCommand.ExecuteScalar(); 
    return o == null ? string.Empty : o.ToString();
    至于楼上的说DBNull.Value值,因为DBNull.Value.ToString()值也是String.Empty,所以可以不用考虑。
      

  6.   

    object o = myCommand.ExecuteScalar(); 
    return o == null ? string.Empty : o.ToString();
    我用的这个代码,问题解决了
    谢谢
    两位给分!!