mySQL获取列表中所有相同的值

本文关键字:获取 列表 mySQL | 更新日期: 2024-09-20 00:15:48

在我的数据库中有7种不同的数据。但在我的Result中,所有返回的值都相同。我的代码中有什么逻辑错误???其中[0]-[6]是具有相同值的1个结果。结果如下[0]="测试仪"[1]="测试机"[2]="测试者"。。。。util[6]

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

mySQL获取列表中所有相同的值

您在同一个user_stream实例上进行操作。将streamData user_stream = new streamData();移动到while循环中,以在每次迭代中创建一个新循环。

while块中创建新的user_stream

最好使用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);
                }
            }
        }
    }
}