如何转换可能为空的bool值

时间:2013-04-02 15:31:37

标签: c# .net

我从数据库中提取数据然后检查是否为真,如果是,我选中复选框。问题是该变量可能为空,然后抛出错误“System.InvalidCastException:指定的强制转换无效”。

任何想法? 下面是效果很好的代码,除非是获得一个空字段。

if ((bool)myReader["Analytics"] == true) Analytics.Checked = true;

5 个答案:

答案 0 :(得分:4)

您可以使用DataReader的{​​{3}}方法。

if (!myReader.IsDBNull(myReader.GetOrdinal("Analytics")))
{
  //not null. do your casting now.
}

答案 1 :(得分:1)

“空”值作为DBNull.Value返回,因此您可以执行以下操作:

if(myReader["Analytics"]!=DBNull.Value)
   Analytics.Checked = (bool)myReader["Analytics"];

只要数据库中的列的类型为bit

答案 2 :(得分:0)

试试这样:

var column = reader.GetOrdinal("Analytics");
if (!myReader.IsBDNull(column))
{
    Analytics.Checked = myReader.GetBoolean(column);
}

答案 3 :(得分:0)

        object nullable=null;
        var result = (bool?)nullable;
        if(result.HasValue)

答案 4 :(得分:0)

试试这个;

Analytics.Checked = (myReader["Analytics"] == "" || (bool)myReader["Analytics"] ==  false) ? false : true );