无法转换System.DBNull

本文关键字:DBNull System 转换 | 更新日期: 2023-09-27 18:07:13

我有一个问题,从excel读取数据。如果单元格是空的,我得到异常"无法强制转换类型为System的对象"。DBNull' to type 'System。我研究了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;
        }
    }

无法转换System.DBNull

您正在调用record.GetString,我希望失败,因为它试图执行到字符串的转换。您应该能够在堆栈跟踪中看到这一点。相反,使用record.GetValue:

string foo = ConvertFromDBVal<string>(record.GetValue(A));

那么在它到达你的方法之前它不会执行任何转换

相关文章: