我从数据库中提取数据然后检查是否为真,如果是,我选中复选框。问题是该变量可能为空,然后抛出错误“System.InvalidCastException:指定的强制转换无效”。
任何想法? 下面是效果很好的代码,除非是获得一个空字段。
if ((bool)myReader["Analytics"] == true) Analytics.Checked = true;
答案 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 );