0

So i have a web api that presents values from my database. However i have 6 rows in my database, but it doesn't return the first row.

How do i get it to read and return all rows in my database?

        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;
Vivek Nuna
  • 25,472
  • 25
  • 109
  • 197
Jeppe Christensen
  • 1,680
  • 2
  • 21
  • 50

2 Answers2

1

Remove if block.

if (reader.Read())
{
Vivek Nuna
  • 25,472
  • 25
  • 109
  • 197
0

The first reader.Read() inside if statement read the first row then while loop start from the second row so you need to remove the if(reader.Read()) portion to read all data from the beginning

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);
  }
Mostafiz
  • 7,243
  • 3
  • 28
  • 42