SqlCommand возвращает только одну строку
Попытка вернуть только первые несколько строк, потому что моя база данных была слишком большой, однако, когда я тестировал свой SQL, я сделал select *
и был возвращен только первый ряд.
SqlCommand sqlCmd = new SqlCommand();
SqlDataReader reader;
sqlCmd.CommandText = "SELECT * FROM Log";
sqlCmd.CommandType = CommandType.Text;
sqlCmd.Connection = myConnection;
myConnection.Open();
reader = sqlCmd.ExecuteReader();
Log logs = null;
while (reader.Read())
{
logs = new Log();
logs.Id = Convert.ToInt32(reader.GetValue(0));
}
return logs;
myConnection.Close();
Что не так с моим решением?
1 ответ
Решение
В вашем цикле вы постоянно воссоздаете экземпляр переменной logs
перезаписывая предыдущую и заканчивая значением последней записи, возвращаемой вашим запросом. Тебе необходимо List<Log>
List<Log> logs = new List<Log>();
while (reader.Read())
{
Log current = new Log();
logs.Id = Convert.ToInt32(reader.GetValue(0));
logs.Add(current);
}
Вы можете использовать этот список в качестве источника данных для сетки или просто сохранить его для будущих ссылок...
foreach(Log log in logs)
MessageBox.Show(log.Id);