dr_iton Ответов: 2

Как заполнить метку средним значением из MSSQL в ASP.NET использование хранимых процедур?


У меня возникла проблема с заполнением метки средним значением из базы данных MSSQL.
Код, написанный в базе данных, таков:
ALTER PROCEDURE [dbo].procTakeAverage

(
@ID_Person int


)
AS
	BEGIN
	SELECT AVG (RATING.Grade) from RATING
	inner join SUBJECT on SUBJECT.ID_Subject= RATING.ID_Subject
	where RATING.ID_Subject = @ID_Person and RATING.ID_RatingType=1
	END

Эта хранимая процедура работает отлично и возвращает среднее значение.
Проблема заключается в том, как показать это значение в метке с помощью ASP.NET технология (код).

Это то, что я пытался сделать до сих пор.

Что я уже пробовал:

<pre><pre lang="c#">
public void AverageValue()
{
средняя строка= строка.Пустой;
DataTable dt = новый DataTable();
SqlConnection sqlConn = new SqlConnection("вот строковое соединение");


пробовать
{
sqlConn.Открыть();

SqlCommand sqlCmd = new SqlCommand("procTakeAverage", sqlConn);


программа sqlcmd.CommandType = CommandType.Хранимая процедура;


программа sqlcmd.Параметры.Добавить("@ID_Person", Значения Sqldbtype.Инт).Значение = среднее;


программа sqlcmd.Параметры["@ID_Person"].Значение = Конвертировать.ToInt32(lblID_Nxenesi.Text);

программа sqlcmd.Метод executenonquery();
среднее значение = lblAverage.Text.Метод toString();

sqlConn.Рядом();

}
ловить { }

}

Этот код не показывает мне среднее значение в lblAverage.

Заранее благодарю вас за ваше время.
Овации.

2 Ответов

Рейтинг:
4

dr_iton

Я нашел решение в соответствии с

F-ES Sitecore
предложения.
Сначала я должен был использовать литья значений в MSSQL для значений с плавающей точкой.
После этого был использован метод ExecuteScalar() в ASP.NET.
Еще раз благодарю вас всех за ваш ответ.


Рейтинг:
18

F-ES Sitecore

Зачем это делать, если вы нигде не устанавливаете текст метки?

sqlCmd.ExecuteNonQuery();


Приведенная выше строка выполняет выбор, но игнорирует результаты

average = lblAverage.Text.ToString();


Это устанавливает локальную переменную average в качестве текста, который находится в lblAverage, но вы нигде не установили этот текст. Вы также передаете "средний" как параметр @ID_Person, но это пустая строка, так что это тоже ничего не даст.

Если ваш SP возвращает одно значение и одну строку, то используйте ExecuteScalar, а не ExecuteNonQuery, чтобы запустить SP и вернуть это значение. Затем вы устанавливаете lblAverage.Текст должен быть значением, возвращаемым из SP, и Вам также нужно передать соответствующий идентификатор человека.

Google для как использовать executescalar так если вы не знаете как.