2013-12-12 33 views
0

在我的數據庫中有7個不同的數據。但在我的結果中,所有返回相同的值。 我的代碼中有什麼邏輯錯誤?其中[0] - [6]是1結果具有相同的值。 這樣[0] = 「測試器」 結果[1] = 「測試器」[2] = 「測試器」 .... util的[6]mySQL獲取所有列表中的相同值

public class StreamWcf : IStreamWcf 
{ 
    public List<streamData> getMusic() 
    { 
     try 
     { 
      MySqlConnection con = new MySqlConnection(WebConfigurationManager.ConnectionStrings["ComeVoxConnectionString"].ToString()); 
      MySqlDataReader myReader; 

      streamData user_stream = new streamData(); 
      List<streamData> userStream = new List<streamData>(); 

      //string cmdText = "SELECT m.id, s.avatar, s.username, m.title, m.path, m.description, m.date FROM users s, musics m WHERE (musics.userID = users.id)"; 
      string cmdText = "SELECT musics.id as MID, users.avatar as UserPic, users.username as userName, musics.title as MTitle, musics.path as MusicPath, musics.description as Mdesc, musics.date as MDate FROM `users`, `musics` WHERE musics.userID = users.id;"; 

      con.Open(); 
      MySqlCommand cmd = new MySqlCommand(cmdText, con); 

      myReader = cmd.ExecuteReader(); 

      if (myReader.HasRows) 
      { 
       while (myReader.Read()) 
       { 
        user_stream.musicID = Convert.ToInt32(myReader["MID"].ToString()); 
        user_stream.Title = myReader["MTitle"].ToString(); 
        user_stream.FilePath = myReader["MusicPath"].ToString(); 
        user_stream.desc = myReader["Mdesc"].ToString(); 
        user_stream.Artists = myReader["userName"].ToString(); 
        user_stream.releaseDate = Convert.ToDateTime(myReader["MDate"].ToString()); 
        user_stream.imgUrl = myReader["UserPic"].ToString(); 


        userStream.Add(user_stream); 
       } 

       myReader.Close(); 
       con.Close(); 
      } 


      return userStream; 
     } 
     catch (Exception ex) 
     { 
      throw new Exception(ex.Message); 
     } 

    } 
} 

回答

1

user_stream新在while塊創建。

而且它的最好使用using語句

using (var con =new MySqlConnection(WebConfigurationManager.ConnectionStrings["ComeVoxConnectionString"].ToString())) 
{ 

    var userStream = new List<streamData>(); 

    //string cmdText = "SELECT m.id, s.avatar, s.username, m.title, m.path, m.description, m.date FROM users s, musics m WHERE (musics.userID = users.id)"; 
    string cmdText = 
     "SELECT musics.id as MID, users.avatar as UserPic, users.username as userName, musics.title as MTitle, musics.path as MusicPath, musics.description as Mdesc, musics.date as MDate FROM `users`, `musics` WHERE musics.userID = users.id;"; 

    con.Open(); 
    using (var cmd = new MySqlCommand(cmdText, con)) 
    { 

     using (MySqlDataReader myReader = cmd.ExecuteReader()) 
     { 

      if (myReader.HasRows) 
      { 
       while (myReader.Read()) 
       { 
        var user_stream = new streamData(); 
        user_stream.musicID = Convert.ToInt32(myReader["MID"].ToString()); 
        user_stream.Title = myReader["MTitle"].ToString(); 
        user_stream.FilePath = myReader["MusicPath"].ToString(); 
        user_stream.desc = myReader["Mdesc"].ToString(); 
        user_stream.Artists = myReader["userName"].ToString(); 
        user_stream.releaseDate = Convert.ToDateTime(myReader["MDate"].ToString()); 
        user_stream.imgUrl = myReader["UserPic"].ToString(); 


        userStream.Add(user_stream); 
       } 
      } 
     } 
    } 
} 
2

你在同一個user_stream實例運行。將streamData user_stream = new streamData();移動到您的while循環中,以便每次迭代創建一個新循環。

+0

非常感謝你......這是工作:D ^^ – user3064311

相關問題