【问题标题】:datatable boolean parse Error数据表布尔解析错误
【发布时间】:2017-03-20 21:33:42
【问题描述】:

请问我的 if 语句有什么问题:

if(bool.Parse(Datatable.Rows[rowindex]["Ready?"].ToString()) == false){}  

在 mscorlib.dll 中发生“System.FormatException”类型的未处理异常 附加信息:字符串未被识别为有效的布尔值。

没有语法错误,但运行时错误。

【问题讨论】:

  • 在抛出异常时,需要找出Datatable.Rows[rowindex]["Ready?"].ToString()返回的字符串是什么。如果您知道这一点,那么您也应该已经知道解决方案了。
  • Datatable.Columns.Add("准备好了吗?", typeof(bool));这是我的专栏。它是一个复选框。运行代码时似乎有错误
  • @andrioduser 照 bl4y 说的去做

标签: c# asp.net .net c#-4.0 c#-3.0


【解决方案1】:

如果数据库中的列类型是位,请尝试

if ((bool)Datatable.Rows[rowindex]["Ready?"]){...} // column is not null
if (((bool?)Datatable.Rows[rowindex]["Ready?"]) != true){...} // column can contain null value.

【讨论】:

    【解决方案2】:

    bool.Parse 的参数必须等于 Boolean.TrueString 或 Boolean.FalseString。否则会抛出 FormatException。

    【讨论】:

    • 修改后任何空格都可以在TrueStringFalseString 之前或之后,并且比较不区分大小写。
    • Datatable.Columns.Add("准备好了吗?", typeof(bool));这是我添加到数据表中的列。当复选框未选中时,返回字符串似乎为 null,而不是 false。我认为这就是错误。
    • @andrioduser 也可以是DBNull,不是null,你可以用Convert.IsDBNull方法检查
    猜你喜欢
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    相关资源
    最近更新 更多