private MySqlParameter InternalAdd(MySqlParameter value, int index)
{
if (value == null)
throw new ArgumentException("The MySqlParameterCollection only accepts non-null MySqlParameter type objects.", "value");
// if the parameter is unnamed, then assign a default name
if (String.IsNullOrEmpty(value.ParameterName))
value.ParameterName = String.Format("Parameter{0}", GetNextIndex());
// make sure we don't already have a parameter with this name
if (IndexOf(value.ParameterName) >= 0)
{
throw new MySqlException(
String.Format(Resources.ParameterAlreadyDefined, value.ParameterName));
}
else
{
string inComingName = value.ParameterName;
if (inComingName[0] == '@' || inComingName[0] == '?')
inComingName = inComingName.Substring(1, inComingName.Length - 1);
if (IndexOf(inComingName) >= 0)
throw new MySqlException(
String.Format(Resources.ParameterAlreadyDefined, value.ParameterName));
}
if (index == -1)
{
items.Add(value);
index = items.Count - 1;
}
else
{
items.Insert(index, value);
AdjustHashes(index, true);
}
indexHashCS.Add(value.ParameterName, index);
indexHashCI.Add(value.ParameterName, index);
value.Collection = this;
return value;
}