SQL Data Reader - handling Null column values

前端 未结 27 2583
甜味超标
甜味超标 2020-11-22 08:53

I\'m using a SQLdatareader to build POCOs from a database. The code works except when it encounters a null value in the database. For example, if the FirstName column in the

27条回答
  •  一向
    一向 (楼主)
    2020-11-22 09:23

    Here is helper class which others can use if they need based on @marc_s answer:

    public static class SQLDataReaderExtensions
        {
            public static int SafeGetInt(this SqlDataReader dataReader, string fieldName)
            {
                int fieldIndex = dataReader.GetOrdinal(fieldName);
                return dataReader.IsDBNull(fieldIndex) ? 0 : dataReader.GetInt32(fieldIndex);
            }
    
            public static int? SafeGetNullableInt(this SqlDataReader dataReader, string fieldName)
            {
                int fieldIndex = dataReader.GetOrdinal(fieldName);
                return dataReader.GetValue(fieldIndex) as int?;
            }
    
            public static string SafeGetString(this SqlDataReader dataReader, string fieldName)
            {
                int fieldIndex = dataReader.GetOrdinal(fieldName);
                return dataReader.IsDBNull(fieldIndex) ? string.Empty : dataReader.GetString(fieldIndex);
            }
    
            public static DateTime? SafeGetNullableDateTime(this SqlDataReader dataReader, string fieldName)
            {
                int fieldIndex = dataReader.GetOrdinal(fieldName);
                return dataReader.GetValue(fieldIndex) as DateTime?;
            }
    
            public static bool SafeGetBoolean(this SqlDataReader dataReader, string fieldName)
            {
                return SafeGetBoolean(dataReader, fieldName, false);
            }
    
            public static bool SafeGetBoolean(this SqlDataReader dataReader, string fieldName, bool defaultValue)
            {
                int fieldIndex = dataReader.GetOrdinal(fieldName);
                return dataReader.IsDBNull(fieldIndex) ? defaultValue : dataReader.GetBoolean(fieldIndex);
            }
        }
    

提交回复
热议问题