2016-10-16 62 views
0

所以我有一個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; 

回答

1

如果阻塞,則刪除。

if (reader.Read()) 
    { 
+0

感謝您閱讀所有的數據循環的開始。但是,我不需要嘗試捕獲異常呢? –

+0

你爲什麼這麼認爲?但如果你想處理它的其他目的,那麼你可以使用 –

+0

太棒了!謝謝。現在它按照升序返回。我如何使它在循環內(ID,姓名,地址,城市,類別)內的順序返回? –

0

第一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); 
    }