[英]Object cannot be cast from DBNull to other types. Error when a null value is read by the Reader
[英]When Checkbox value is null. Program throws this error“ Object cannot be cast from DBNull to other types.”
当数据库中的复选框值为null时,将引发错误。 当它是0
或1
它将按预期工作。
if (Request.QueryString["Sckey"] != null && Request.QueryString["Sckey"].ToString() != "")
{
string str_sql1 = "select ScenarioSeq,ScenarioName,FileName,ScenarioNotes,IsUpperCase from Scenario where ScenarioKey=@ScenarioKey;";
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"]);
}
RDBMS术语中的Null
具有特殊含义 ,代表未知 , 无效 , 不能应用于等,这就是为什么不能bool
(对于未知变量应使用什么bool
值( true
, false
)? )。 试试dr.IsNull("IsUpperCase")
:
ch_Uppercase.Checked = !dr.IsNull("IsUpperCase") && Convert.ToBoolean(dr["IsUpperCase"]);
做这样的事..
ch_Uppercase.Checked =
Convert.ToBoolean(dr["IsUpperCase"] == DBNull.Value? 0: dr["IsUpperCase"]);
int number;
bool result = Int32.TryParse(dr["IsUpperCase"], out number);
ch_Uppercase.Checked = number;
像这样更正它。
ch_Uppercase.Checked = !dr.IsNull ? Convert.ToBoolean(dr["IsUpperCase"]) : false;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.