Wednesday, November 21, 2007

Reader Helper Class in C#

This class will help with reading data from any DataReader. It has helper methods to parse out almost any datatype from the database into a C# data type.

using System;

using System.Data.Common;

using System.Collections.Generic;

using System.Text;

using System.Xml;

using System.Data.SqlClient;


public class ReaderHelper

{

/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <param name="defaultGuid"></param>

/// <returns></returns>

public static Guid GetGuid(DbDataReader rdr, string column, Guid defaultGuid)

{

int ordinal = rdr.GetOrdinal(column);

if (rdr.IsDBNull(ordinal))

{

return defaultGuid;

}

else

{

return rdr.GetGuid(ordinal);

}

}


/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <param name="defaultGuid"></param>

/// <returns></returns>

public static Guid GetGuid(DbDataReader rdr, string column)

{

int ordinal = rdr.GetOrdinal(column);

return rdr.GetGuid(ordinal);

}


/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <returns></returns>

public static decimal GetDecimal(DbDataReader rdr, string column)

{

return GetDecimal(rdr, column, 0);

}


/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <param name="defaultValue"></param>

/// <returns></returns>

public static decimal GetDecimal(DbDataReader rdr, string column, decimal defaultValue)

{

int ordinal = rdr.GetOrdinal(column);

if (rdr.IsDBNull(ordinal))

{

return defaultValue;

}

else

{

return rdr.GetDecimal(ordinal);

}

}


/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <returns></returns>

public static double GetDouble(DbDataReader rdr, string column)

{

return GetDouble(rdr, column, 0);

}


/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <param name="defaultValue"></param>

/// <returns></returns>

public static double GetDouble(DbDataReader rdr, string column, double defaultValue)

{

int ordinal = rdr.GetOrdinal(column);

if (rdr.IsDBNull(ordinal))

{

return defaultValue;

}

else

{

return rdr.GetDouble(ordinal);

}

}


/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <returns></returns>

public static DateTime GetDateTime(DbDataReader rdr, string column)

{

return GetDateTime(rdr, column, new DateTime());

}


/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <param name="defaultValue"></param>

/// <returns></returns>

public static DateTime GetDateTime(DbDataReader rdr, string column, DateTime defaultValue)

{

int ordinal = rdr.GetOrdinal(column);

if (rdr.IsDBNull(ordinal))

{

return defaultValue;

}

else

{

return rdr.GetDateTime(ordinal);

}

}


/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <returns></returns>

public static string GetString(DbDataReader rdr, string column)

{

return GetString(rdr, column, null);

}


/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <param name="defaultValue"></param>

/// <returns></returns>

public static string GetString(DbDataReader rdr, string column, string defaultValue)

{

int ordinal = rdr.GetOrdinal(column);

if (rdr.IsDBNull(ordinal))

{

return defaultValue;

}

else

{

return rdr.GetString(ordinal);

}

}


/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <returns></returns>

public static string GetStringNotNull(DbDataReader rdr, string column)

{

int ordinal = rdr.GetOrdinal(column);

if (rdr.IsDBNull(ordinal))

{

return "";

}

else

{

string value = rdr.GetString(ordinal);

if (value == null) value = "";

return value;

}

}


/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <returns></returns>

public static int GetInt(DbDataReader rdr, string column)

{

return GetInt(rdr, column, 0);

}


/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <param name="defaultValue"></param>

/// <returns></returns>

public static int GetInt(DbDataReader rdr, string column, int defaultValue)

{

int ordinal = rdr.GetOrdinal(column);

if (rdr.IsDBNull(ordinal))

{

return defaultValue;

}

else

{

return rdr.GetInt32(ordinal);

}

}


/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <returns></returns>

public static int GetInt16(DbDataReader rdr, string column)

{

return GetInt16(rdr, column, 0);

}


/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <param name="defaultValue"></param>

/// <returns></returns>

public static int GetInt16(DbDataReader rdr, string column, int defaultValue)

{

int ordinal = rdr.GetOrdinal(column);

if (rdr.IsDBNull(ordinal))

{

return defaultValue;

}

else

{

return rdr.GetInt16(ordinal);

}

}


/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <param name="defaultValue"></param>

/// <returns></returns>



public static double GetMoney(DbDataReader rdr, string column)

{

int ordinal = rdr.GetOrdinal(column);

SqlDataReader sqlReader = (SqlDataReader)rdr;

if (sqlReader.IsDBNull(ordinal))

{

return new double();

}

else

{

return double.Parse(sqlReader.GetSqlMoney(ordinal).ToString());

}

}

/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <returns></returns>

public static byte GetByte(DbDataReader rdr, string column)

{

int ordinal = rdr.GetOrdinal(column);


if (rdr.IsDBNull(ordinal))

{

return new byte();

}

else

{

return rdr.GetByte(ordinal);

}

}


/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <param name="defaultValue"></param>

/// <returns></returns>

public static char GetChar(DbDataReader rdr, string column, char defaultValue)

{

int ordinal = rdr.GetOrdinal(column);

if (rdr.IsDBNull(ordinal))

{

return defaultValue;

}

else

{

char[] c = new char[1];

rdr.GetChars(0, 0, c, 0, 1);

return c[0];

}

}


/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <returns></returns>

public static bool GetBool(DbDataReader rdr, string column)

{

return GetBool(rdr, column, false);

}


/// <summary>

///

/// </summary>

/// <param name="rdr"></param>

/// <param name="column"></param>

/// <param name="defaultValue"></param>

/// <returns></returns>

public static bool GetBool(DbDataReader rdr, string column, bool defaultValue)

{

int ordinal = rdr.GetOrdinal(column);

if (rdr.IsDBNull(ordinal))

{

return defaultValue;

}

else

{

string value = "";


value = rdr.GetValue(ordinal).ToString();


if (value.Equals("yes", StringComparison.OrdinalIgnoreCase)

|| value.Equals("y", StringComparison.OrdinalIgnoreCase)

|| value.Equals("on", StringComparison.OrdinalIgnoreCase)

|| value.Equals("true", StringComparison.OrdinalIgnoreCase)

|| value.Equals("1", StringComparison.OrdinalIgnoreCase))

{

return true;

}


return false;

}

}


}


0 comments: