The SqlParameter is already contained by another SqlParameterCollection

Рейтинг: 0Ответов: 1Опубликовано: 26.04.2015

добрый день, не могу понять почему я не могу добавить в параметры процедуры второе значение, выдает ошибку

The SqlParameter is already contained by another SqlParameterCollection

        ValueSQLDataPC.FlagBegin = true;
        ResultPCInfo = GetMethod.GetPCData(ID, IP);
        ValueDataConnect.SendCommand.CommandText = "sp_CheckIndex";
        ValueDataConnect.SendCommand.CommandType = CommandType.StoredProcedure;
        SqlParameter[] ParameterArray = new SqlParameter[2];
        ValueDataConnect.SendCommand.Parameters.Clear();
        ValueDataConnect.SendCommand.Parameters.Add("@CheckCode", SqlDbType.Int, 342);
        SqlParameter ReturnResult = new SqlParameter("@ResultSearch", SqlDbType.VarChar);
        ReturnResult.Value = "";
        ReturnResult.Direction = ParameterDirection.ReturnValue;
        ValueDataConnect.SendCommand.Parameters.Add(ReturnResult);
        ValueDataConnect.SendCommand.ExecuteNonQuery();
        ResultCheck = Convert.ToString(ValueDataConnect.SendCommand.Parameters["@ResultSearch"].Value);

Ответы

▲ 2Принят

Каждый объект SqlParameter можно использовать только один раз. В вашем коде повторного использования одного и того же SqlParameter нет, так что воспользуйтесь отладчиком и найдите конкретную строчку. Скорее всего это будет строка вида

someCommand.Parameters.Add(someParameter);

где тот же самый объект someParameter уже раньше был передан в другой вызов типа someOtherCommand.Parameters.Add(someParameter). Уберите повторное использование этого someParameter, и ошибка пропадет.