Reader不会从数据库返回所有行

时间:2016-10-16 17:00:27

标签: c# mysql asp.net xml

所以我有一个web api,它显示了我数据库中的值。但是我的数据库中有6行,但它不会返回第一行。

如何让它读取并返回数据库中的所有行?

        cmd.CommandText = "SELECT * FROM `CustomerDb`";
        cmd.CommandType = CommandType.Text;
        cmd.Connection = mySqlConnection;

        mySqlConnection.Open();
        MySqlDataReader reader = cmd.ExecuteReader();

        var listOfPlace = new List<Place>();

        if (reader.Read())
        {
            while (reader.Read())
            {
                var Place = new Place();
                Place.ID = Convert.ToInt32(reader["id"]);
                Place.Name = reader["name"].ToString();
                Place.Address = reader["address"].ToString();
                Place.City = reader["city"].ToString();
                Place.Category = reader["category"].ToString();

                listOfPlace.Add(Place);
            }
        };
        return listOfPlace;

2 个答案:

答案 0 :(得分:1)

删除if块。

if (reader.Read())
    {

答案 1 :(得分:0)

if语句中的第一个reader.Read()读取第一行然后从第二行开始循环,因此您需要删除if(reader.Read())部分以从头开始读取所有数据

while (reader.Read())
  {
      var Place = new Place();
      Place.ID = Convert.ToInt32(reader["id"]);
      Place.Name = reader["name"].ToString();
      Place.Address = reader["address"].ToString();
      Place.City = reader["city"].ToString();
      Place.Category = reader["category"].ToString();

      listOfPlace.Add(Place);
  }