想要将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;
}
答案 0 :(得分:0)
在此行中,您可以创建一个变量:
string pictureFilePath = "";
然后在循环内部总是将值赋给同一个变量:
while (dataReader.Read())
{
pictureFilePath = dataReader["pictureFilePath"].ToString();
}
因此,您始终将值分配给同一个变量,因此只保留最后一行。您需要创建一个列表来获取所有值,而不是最后一个值。
答案 1 :(得分:0)
我认为问题在于:
pictureFilePath = dataReader["pictureFilePath"].ToString();
这将覆盖函数从该循环读入的任何其他字符串。您需要让函数返回一个字符串数组,然后添加它们。目前阵列图片列表&#39;你创建只包含一个字符串。