我從數據庫中提取數據,然後檢查它是否爲真,如果是,我選中該複選框。問題是變量可能爲空,然後拋出錯誤「System.InvalidCastException:指定的轉換無效」。如何投射可能爲空的布爾值
任何想法?下面的 是很好的代碼,除非它是空的字段。
if ((bool)myReader["Analytics"] == true) Analytics.Checked = true;
我從數據庫中提取數據,然後檢查它是否爲真,如果是,我選中該複選框。問題是變量可能爲空,然後拋出錯誤「System.InvalidCastException:指定的轉換無效」。如何投射可能爲空的布爾值
任何想法?下面的 是很好的代碼,除非它是空的字段。
if ((bool)myReader["Analytics"] == true) Analytics.Checked = true;
您可以使用DataReader
的IsDBNull
方法。
if (!myReader.IsDBNull(myReader.GetOrdinal("Analytics")))
{
//not null. do your casting now.
}
嘗試這樣的:
var column = reader.GetOrdinal("Analytics");
if (!myReader.IsBDNull(column))
{
Analytics.Checked = myReader.GetBoolean(column);
}
「空」 的值返回DBNull.Value所以你可以這樣做:
if(myReader["Analytics"]!=DBNull.Value)
Analytics.Checked = (bool)myReader["Analytics"];
只要在數據庫中的列是類型bit
object nullable=null;
var result = (bool?)nullable;
if(result.HasValue)
試試這個;
Analytics.Checked = (myReader["Analytics"] == "" || (bool)myReader["Analytics"] == false) ? false : true);
它是一個DB變量嗎? – nik0lias