无法添加到ArrayList然后在Listbox C#中

时间:2014-08-03 15:17:26

标签: c# database arraylist listbox

想要将arraylist中的值循环到列表框中。目前,只有arraylist中的最新项目才会添加到列表框中。

按钮下的代码

                string strRating = txtRatingComment.Text;
                string strReturnedFilePath = db.retrievePictureRating(strRating);
                //clear album
                listBoxSearchResult.Items.Clear();

                //Add filepaths into arraylist
                pictureList.Add(strReturnedFilePath);

                //Loop arraylist into listbox
                for (int i = 0; i < pictureList.Count; i++)
                {
                    listBoxSearchResult.Items.Add(pictureList[i]);
                }

数据库类下的代码

 public string retrievePictureRating(string strRating)
    {
        string query = "SELECT pictureFilePath FROM picture where pictureRating = @pictureRating;";
        string pictureFilePath = "";

        //open connection
        if (this.OpenConnection() == true)
        {
            //Create Command
            MySqlCommand cmd = new MySqlCommand(query, connection);
            cmd.Parameters.AddWithValue("@pictureRating", strRating);

            //Create a data reader and Execute the command
            MySqlDataReader dataReader = cmd.ExecuteReader();

            //Read the data and store them in the list
            while (dataReader.Read())
            {
                pictureFilePath = dataReader["pictureFilePath"].ToString();
            }
            //close Data Reader
            dataReader.Close();

            //close Connection
            this.CloseConnection();
        }
        return pictureFilePath;
    }

2 个答案:

答案 0 :(得分:0)

在此行中,您可以创建一个变量:

string pictureFilePath = "";

然后在循环内部总是将值赋给同一个变量:

while (dataReader.Read())
{
    pictureFilePath = dataReader["pictureFilePath"].ToString();
}

因此,您始终将值分配给同一个变量,因此只保留最后一行。您需要创建一个列表来获取所有值,而不是最后一个值。

答案 1 :(得分:0)

我认为问题在于:

pictureFilePath = dataReader["pictureFilePath"].ToString();

这将覆盖函数从该循环读入的任何其他字符串。您需要让函数返回一个字符串数组,然后添加它们。目前阵列图片列表&#39;你创建只包含一个字符串。