我正在从数据库中提取数据,然后检查它是否为真,如果是,我选中复选框。问题是变量可能为空,然后抛出错误“System.InvalidCastException:指定的转换无效。”
有任何想法吗?下面是运行良好的代码,除非它得到一个空字段。
if ((bool)myReader["Analytics"] == true) Analytics.Checked = true;
可以使用的IsDBNull
方法DataReader
。
if (!myReader.IsDBNull(myReader.GetOrdinal("Analytics")))
{
//not null. do your casting now.
}
“空”值作为 DBNull.Value 返回,因此您可以执行以下操作:
if(myReader["Analytics"]!=DBNull.Value)
Analytics.Checked = (bool)myReader["Analytics"];
只要数据库中的列是类型bit
试试这样:
var column = reader.GetOrdinal("Analytics");
if (!myReader.IsBDNull(column))
{
Analytics.Checked = myReader.GetBoolean(column);
}
object nullable=null;
var result = (bool?)nullable;
if(result.HasValue)
试试这个;
Analytics.Checked = (myReader["Analytics"] == "" || (bool)myReader["Analytics"] == false) ? false : true );