Santhosh23 Ответов: 1

Как решить SqlParameter уже содержится в другом SqlParameterCollection.


Всем Привет,

Я использую 3-шинную архитектуру для разработки веб-приложения. но я получил ошибку при вставке значений в таблицу.
у меня есть 2 параметра sql parameter [1]=@pageID
параметр[2]=@userID
мой код, как это в DAL

public void InsertIntendedUsersPerPages_DAL(Array UsersList, int PageID)
{
    string storedProcedureName = "USP_InsertIntendedUsersPerPages";
    SqlParameter[] parameters = new SqlParameter[2];
    parameters[0] = new SqlParameter("@PageID", SqlDbType.Int);
    parameters[0].Value = PageID;
    for (int k = 0; k < UsersList.Length; k++)    {
        parameters[1] = new SqlParameter("@UserID", SqlDbType.Int);
        parameters[1].Value = UsersList.GetValue(k);
        //cmd1.Parameters.Add("@empid", SqlDbType.BigInt);
        try
        {
             //DataSet result = new DataSet();
            //result = SqlHelper.ExecuteDataset(con, CommandType.StoredProcedure, storedProcedureName, parameters);
         int   ID = SqlHelper.ExecuteNonQuery(con, CommandType.StoredProcedure, storedProcedureName, parameters);
}
      catch
        {
        }
    }

}


но у меня есть ошибка
SqlParameter уже содержится в другой коллекции SqlParameterCollection.

как решить мою ошибку
пожалуйста, помогите мне

PRAKASH9

вы должны запустить цикл от K=1 и K как параметры, [к]

1 Ответов

Рейтинг:
0

Prasad Khandekar

Здравствуйте Сантош,

Предполагая, что вы хотите выполнить хранимую процедуру для каждого пользователя, попробуйте изменить код, как показано ниже.

public void InsertIntendedUsersPerPages_DAL(Array UsersList, int PageID)
{
    if (null == UsersList || UsersList.Length < 1) return;

    SqlParameter[] parameters;
    string storedProcedureName = "USP_InsertIntendedUsersPerPages";
    // Run procedure for every user
    for (int k = 0; k < UsersList.Length; k++) {
        parameters = new SqlParameter[UsersList.Length + 1];
        parameters[0] = new SqlParameter("@PageID", SqlDbType.Int);
        parameters[0].Value = PageID;
        parameters[1] = new SqlParameter("@UserID", SqlDbType.Int);
        parameters[1].Value = UsersList.GetValue(k);

        try {
            int ID = SqlHelper.ExecuteNonQuery(con, CommandType.StoredProcedure, storedProcedureName, parameters);
        }
        catch
        {
        }
    }
}

С уважением,