I am dealing with a mature Oracle database, and that i feel there's likely an easy method to carry out unboxing the values I retrieve in the database.

Presently, I've got a static class filled with different type-specific techniques:

public static int? Int(object o)
{
    try
    {
    	return (int?)Convert.ToInt32(o);
    }
    catch (Exception)
    {
    	return null;
    }
}

..and so forth for various types, however i feel there must be an easy method? If I wish to unbox something, I actually do something like...

int i;
i = nvl.Int(dataRow["column"]); //In this instance, "column" is of a numeric database type

I figured about utilizing a generic class to deal with all of the different types, however i could not really determine the easiest method to start that.

Any ideas?

I've found assistant techniques like the following helpful inside your scenario - testing for DBNull is much more efficient than catching the best as with your example:

public static MyHelper
{
    public static Nullable<T> ToNullable<T>(object value) where T : struct
    {
        if (value == null) return null;
        if (Convert.IsDBNull(value)) return null;
        return (T) value;
    }

    public static string ToString(object value)
    {
        if (value == null) return null;
        if (Convert.IsDBNull(value)) return null;
        return (string)value;
    }
}

This works best for the string and also the usual primitive value types you will come across (int, decimal, double, bool, DateTime).

It's slightly not the same as your example for the reason that it casts instead of converts - but personally I favor this. I.e. when the database column is Number (decimal), I'd prefer to be explicit basically desired to convert the worthiness to int, e.g.:

int? myIntValue = (int?) MyHelper.ToNullable<decimal>(reader["MyNumericColumn"]);

You can introduce simple model classes and map together.

For instance:

public class Customer
{
   public Customer(DataRow row) 
   {
      Name = row["Name"];
   }
   public Name { get; private set; }
}

Obviously, to lessen duplicate code, you can produce a base class for the model data classes.

Based on effort you need to spend, you can go and employ an ORM mapper NHibernate.