【问题标题】:SQLDataReader how to check for null column values? [duplicate]SQLDataReader 如何检查空列值? [复制]
【发布时间】:2012-06-26 09:52:37
【问题描述】:

我正在使用 SQLDataReader 将列数据插入字符串[]。

但是,某些列值为空。我有点不确定如何检查这一点,因为当我执行 reader[column_pos] 时,它说该值为“n/a”。

我可以执行哪些检查,以便我可以执行以下操作:

for(int i=0; i<myarray.Length;i++){
    if(something){
        myarray[i] = reader[i];
    }
    else
    {
        myarray[i] = "";
    }
}

当列中有空值时插入一个空白字符串。

【问题讨论】:

    标签: c# .net ado.net sqlclient


    【解决方案1】:

    您可以使用IsDBNull

    for(int i=0; i<myarray.Length;i++){
        if(reader.IsDBNull(i)){
            myarray[i] = "";
        }
        else
        {
            myarray[i] = reader[i];
    
        }
    }
    

    【讨论】:

      【解决方案2】:

      您也可以使用if (reader[0] == DBNull.Value)。如果您可以控制查询的运行,您也可以使用 SQL ISNULL(field, default_value) 函数来确保列返回值。

      对于 C#,您还可以使用 if/else 简写:

      myArray[i] = (reader[i] == DBNull.Value) ? "" : reader[0];
      

      这意味着:如果读者值为DBNULL,则使用"",否则使用读者值。

      【讨论】:

        【解决方案3】:

        SqlDataReader 类具有 IsDBNull 属性。

        您可以编写如下代码:

        for(int i=0; i<myarray.Length;i++){
            if(myReader.IsDBNull(i)){
                myarray[i] = "";
            }
            else
            {
                myarray[i] = reader[i];
        
            } }
        

        或者更好:

        for(int i=0; i<myarray.Length;i++){
              myarray[i] = reader.IsDBNull(i) ? "" : reader[i];
        }
        

        【讨论】:

          【解决方案4】:
          myarray[i] = reader.IsDBNull(i) || reader[i] == DBNull.Value ? string.Empty : reader[i];
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-01-21
            • 2013-09-04
            • 1970-01-01
            • 1970-01-01
            • 2012-06-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多