Переношу взятые из sql данные в список, но он каждый раз отправляет 1 недостающие данные, команда sql работает без проблем. неправильно работает в С# Если в sql 10 данных, то вытягивает 9 из них.
SqlCommand komut = new SqlCommand("EXEC AnalysisUnitCorrect ", Datacon.baglanti());
SqlDataReader dr = komut.ExecuteReader();
if (dr.Read())
{
while (dr.Read())
{
Analysis s = new Analysis();
s.UnitName = Convert.ToString(dr[0]);
s.Correct = Convert.ToInt16(dr[1]);
AnalysisCorrect.Add(s);
}
Datacon.baglanti().Close();
}
else
{
Datacon.baglanti().Close();
}
Строка if (dr.Read())
— это проблема. Вызов "Read()" позволяет перейти к следующей записи.
Вы можете упростить это и просто удалить оператор if
и оставить цикл while
.
Побочный момент: ваше соединение, команда и объекты чтения нуждаются в
using
. Кэширует ли нет объект подключения. Кроме того, для эффективного выполнения процедуры вы можете сделатьusing (var komut = new SqlCommand("AnalysisUnitCorrect", baglanti) { CommandType = CommandType.StoredProcedure }) { ...