ToString
我的建议是当数据不是字符串时永远不要转换,如果数据已经是字符串,那么调用ToString
是多余的,只需要一个转换。
我假设数据库中的数据类型是整数,在这种情况下,您可以使用可为空的 int。
int? accountNumber = reader["Account Number"] == DBNull.Value ? null : (int?)reader["Account Number"];
我已经做了一个扩展方法来做这件事。
public static class SqlDataReaderExtensions
{
public static T Field<T>(this SqlDataReader reader, string columnName)
{
object obj = reader[columnName];
if (obj == null)
{
throw new IndexOutOfRangeException(
string.Format(
"reader does not contain column: {0}",
columnName
)
);
}
if (obj is DBNull)
{
obj = null;
}
return (T)obj;
}
}
用法
int? accountType = reader.Field<int?>("Account Number"); // will return NULL or the account number.