データベース内のチェックボックスの値がnullの場合、エラーをスローします。 0
または1
の場合、期待どおりに動作します。 RDBMSの面でチェックボックスの値がnullの場合。プログラムはこのエラーをスローします。「オブジェクトはDBNullから他の型にキャストできません。
if (Request.QueryString["Sckey"] != null && Request.QueryString["Sckey"].ToString() != "")
{
string str_sql1 = "select ScenarioSeq,ScenarioName,FileName,ScenarioNotes,IsUpperCase from Scenario where [email protected];";
SqlCommand cm = new SqlCommand(str_sql1);
cm.Parameters.AddWithValue("@ScenarioKey", str_ScKey);
DataSet ds2 = this.DA.GetDataSet(cm);
DataRow dr = ds2.Tables[0].Rows[0];
txt_ScenarioName.Text = dr["ScenarioName"].ToString();
txt_ScenarioNotes.Text = dr["ScenarioNotes"].ToString();
ch_Uppercase.Checked = Convert.ToBoolean(dr["IsUpperCase"]);
}
はい、エラーが示すように、他のタイプにキャストすることはできません。ブール値としてのnullは何ですか?あなたはそれを別々にチェックしなければなりません。 - dr ["IsUpperCase"]を使用した直接バインディングの代わりに –
を使用する場合は、最初にnullであるかどうかを確認する必要があります。 nullの場合はFalseに設定し、nullでない場合はConvert.ToBooleanに設定します。 – Nirman
不適切な質問書式と無関係なコメント付きコードを元のコードから削除しました... nullをブール値に変換しようとしています。それは何であるべきですか?あなたは何も真実または偽に変換しようとしていません。 – Reniuz