1

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

有任何想法吗?下面是运行良好的代码,除非它得到一个空字段。

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

5 回答 5

4

可以使用的IsDBNull方法DataReader

if (!myReader.IsDBNull(myReader.GetOrdinal("Analytics")))
{
  //not null. do your casting now.
}
于 2013-04-02T15:33:16.710 回答
1

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

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

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

于 2013-04-02T15:34:35.820 回答
0

试试这样:

var column = reader.GetOrdinal("Analytics");
if (!myReader.IsBDNull(column))
{
    Analytics.Checked = myReader.GetBoolean(column);
}
于 2013-04-02T15:34:05.093 回答
0
        object nullable=null;
        var result = (bool?)nullable;
        if(result.HasValue)
于 2013-04-02T15:34:57.663 回答
0

试试这个;

Analytics.Checked = (myReader["Analytics"] == "" || (bool)myReader["Analytics"] ==  false) ? false : true );
于 2013-04-02T15:35:59.117 回答