Often in my line of work, I need to create parameterized queries in code. All those overloaded constructors. Yuck. So, like a lazy guy would, I built a factory. I use it everywhere. In my personal projects and even at work when no one is looking. Here it is:
static SqlParameter CreateParameter(string name, SqlDbType type,
ParameterDirection direction, int? size, byte? precision, object value)
{
SqlParameter param = new SqlParameter(name, type);
param.Direction = direction;
if (size.HasValue) param.Size = size.Value;
if (precision.HasValue) param.Precision = precision.Value;
if (value != null) param.Value = value; else param.Value = DBNull.Value;
return param;
}
And then when I'm building a command, I just do this:
cmd.Parameters.Add(DataAccess.CreateParameter("@RETURN_VALUE",
SqlDbType.Int, ParameterDirection.ReturnValue, null, null, null));
cmd.Parameters.Add(DataAccess.CreateParameter("@ID",
SqlDbType.Int, ParameterDirection.Input, null, null, id));
cmd.Parameters.Add(DataAccess.CreateParameter("@NAME",
SqlDbType.VarChar, ParameterDirection.Input, 50, null, name));
Of course, it won't work for everything, but it makes quick work out of most of my parameter creation. Hooray for the factory.