对数据库表执行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语句细节问题弄不好,总是出错,
哪位高手可以指点一二。。不胜感激
我设置的语句为
sqlconnpro.Open();
SqlCommand myCommand = new SqlCommand();
myCommand.CommandText = sqlcommandtxt;
myCommand.Connection = sqlconnpro.conn;
sqlconnpro.Close();
return myCommand.ExecuteScalar().ToString();
最后一行就会提示NulReferenceException错误,改称try,catch语句细节问题弄不好,总是出错,
哪位高手可以指点一二。。不胜感激
object o = myCommand.ExecuteScalar();
if (o==DBNull.Value)
{
...
}
return o == null ? string.Empty : o.ToString();
return myCommand.ExecuteScalar()==null?string.Empty:myCommand.ExecuteScalar().ToString();
如果查询结果有空值(比如 SELECT NULL )则返回值是DBNull.Value .所以要2个都判断, 楼上各位都只判断了一个.
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,所以可以不用考虑。
return o == null ? string.Empty : o.ToString();
我用的这个代码,问题解决了
谢谢
两位给分!!