无法转换System.DBNull

时间:2015-08-11 09:13:02

标签: c# oledb

从excel读取数据时遇到问题。如果单元格为空,我得到异常“无法将类型'System.DBNull'的对象强制转换为'System.String'”我已经研究了stackoverflow并发现DBNullValues可以转换,我尝试了这个建议,但我的程序抛出甚至在它调用转换DBValues的方法之前就是一个例外。有什么建议吗?

            int A = reader.GetOrdinal("A");

            foreach (DbDataRecord record in reader)
            {
                string foo = ConvertFromDBVal<string>(record.GetString(A));
            }
        }
        catch
        {

        }
        conn.Close();
        return AllConnections;
    }

    public static T ConvertFromDBVal<T>(object obj)
    {
        if (obj == null || obj == DBNull.Value)
        {
            return default(T);
        }
        else
        {
            return (T)obj;
        }
    }

1 个答案:

答案 0 :(得分:2)

您正在调用sample_name gender chemotherapy clinical_subtype color.gender sample_01 M alk 1 #8DA0CB sample_02 F tmz 2 #FC8D62 sample_03 M rad 2 #8DA0CB sample_04 M rad.tmz 4 #8DA0CB sample_05 F tmz 3 #FC8D62 ,我希望 失败,因为它正在尝试执行转换为字符串。您应该能够在堆栈跟踪中看到它。相反,请使用record.GetString

record.GetValue

然后在它到达您的方法之前不会执行任何转换。