1

DB からデータを取得し、それが真であるかどうかを確認しています。真である場合は、チェック ボックスをオンにします。問題は、変数が空である可能性があり、「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 に答える
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 に答える
0

このようにしてみてください:

var column = reader.GetOrdinal("Analytics");
if (!myReader.IsBDNull(column))
{
    Analytics.Checked = myReader.GetBoolean(column);
}
于 2013-04-02T15:34:05.093 に答える