繁体   English   中英

当Checkbox值为null时。 程序抛出此错误“对象不能从DBNull强制转换为其他类型。”

[英]When Checkbox value is null. Program throws this error“ Object cannot be cast from DBNull to other types.”

当数据库中的复选框值为null时,将引发错误。 当它是01它将按预期工作。

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值( truefalse )? )。 试试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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM