SqlCommand只返回一行

本文关键字:一行 返回 SqlCommand | 更新日期: 2023-09-27 18:01:43

试图只返回前几行,因为我的数据库太大,但是当我测试我的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();

我的解决方案有什么问题?

SqlCommand只返回一行

在循环中,您不断地重新创建变量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);