Проблема с вызовом хранимой процедуры из моего кода C # - PullRequest
0 голосов
/ 13 августа 2011

Я хочу запустить sp из моего кода. имя sp хранится в БД. Я передаю параметры через словарь. Этот код является одним из моих методов службы wcf, которые размещаются в службе Windows. мой код:

    private DataSet RunReport(int id, ParameterDictionary parametersDic)
    {
        DataSet result = new DataSet();
        try
        {
            DataSet report = GetReportDataset(id);

            if (report.Tables[0].Rows.Count > 0)
            {
                string reportType = GetReportTypeDataset(Convert.ToInt32(report.Tables[0].Rows[0]["ReportTypeID"]));

                if (reportType != ReportType.StoredProcedure.ToString())
                {
                    throw new Exception("your report is not a sp report.");
                }

                using (DbCommand paramCommand = DatabaseManager.Database.GetStoredProcCommand(report.Tables[0].Rows[0]["SQLQuery"].ToString()))
                {
                    foreach (var parameter in parametersDic)
                    {
                        DatabaseManager.Database.SetParameterValue(paramCommand, parameter.Key, parameter.Value);
                    }
                    result = DatabaseManager.Database.ExecuteDataSet(paramCommand);
                    result.AcceptChanges();
                }
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
        return result;
    }

Когда я запускаю этот код, появляется ошибка ниже:

SqlParameter с ParameterName 'ID' не содержится в этом SqlParameterCollection.

Кроме того, когда я вызываю этот метод через формы win, все в порядке. в чем проблема?

1 Ответ

0 голосов
/ 31 января 2012

Я думаю, вам, возможно, придется добавить параметры перед их установкой:

foreach param ... {DatabaseManager.Database.AddInParameter (paramCommand, <name>, <DbType>);

DatabaseManager.Database.SetParameterValue (paramCommand, parameter.Key, parameter.Value);

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...