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);
Другие вопросы по тегам