无法转换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;
}
}
您正在调用record.GetString
,我希望失败,因为它试图执行到字符串的转换。您应该能够在堆栈跟踪中看到这一点。相反,使用record.GetValue
:
string foo = ConvertFromDBVal<string>(record.GetValue(A));
那么在它到达你的方法之前它不会执行任何转换