The code samples below document how I moved from my intial code that didn't check for null to a method that allows me to check for null and return a value of any type using generics.
Code example 1:
this.Address2 = reader.GetString(reader.GetOrdinal("Address1"));
Code example 2:
int ordinal = reader.GetOrdinal("Address1");
if (!reader.IsDBNull(ordinal))
{
this.Address1 = reader.GetString(ordinal);
}
else
{
this.Address1 = "";
}
Code example 3:
private static string GetStringReaderColumn(SqlDataReader reader, string columnName, string defaultValue)
{
int ordinal = reader.GetOrdinal(columnName);
if (!reader.IsDBNull(ordinal))
{
return reader.GetString(ordinal);
}
else
{
return defaultValue;
}
}
Code example 4:
private static int GetInt32ReaderColumn(SqlDataReader reader, string columnName, int defaultValue)
{
{
int ordinal = reader.GetOrdinal(columnName);
if (!reader.IsDBNull(ordinal))
{
else
{
}if (!reader.IsDBNull(ordinal))
{
return reader.GetInt32(ordinal);
}else
{
return defaultValue;
}Code Example 5:
private delegate T GetReaderColumnDelegate(int ordinal);
private static T GetReaderColumn(SqlDataReader reader, string columnName, T defaultValue, GetReaderColumnDelegate getReaderColumnDelegate)
{
private static T GetReaderColumn
{
int ordinal = reader.GetOrdinal(columnName);
if (!reader.IsDBNull(ordinal))
{
else
{
}if (!reader.IsDBNull(ordinal))
{
return getReaderColumnDelegate(ordinal);
}else
{
return defaultValue;
}Code Example 6:
private static string GetStringReaderColumn(SqlDataReader reader, string columnName, string defaultValue)
{
return GetReaderColumn(reader, columnName, defaultValue, reader.GetString);
}
private static int GetInt32ReaderColumn(SqlDataReader reader, string columnName, int defaultValue)
{
return GetReaderColumn(reader, columnName, defaultValue, reader.GetInt32);
}
