从数据库中使用字符串的foreach循环

3

我正在尝试从数据库中读取多个字符串,并使用foreach string in (从数据库获取的字符串)循环。为了让您更好地了解:这是方法。(我已经在之前声明了连接。)

private void PendingButton_Click(object sender, RoutedEventArgs e)
    {
        string PendingQuery = "SELECT user_from FROM friend_requests WHERE user_to=@username";
        connection.Open();
        MySqlCommand PendingCommand = new MySqlCommand(PendingQuery, connection);
        PendingCommand.Parameters.AddWithValue("@username", CurrentUserUsername);
        MySqlDataReader PendingDataReader = PendingCommand.ExecuteReader();
        while (PendingDataReader.Read())
        {
            foreach (string senderusername in PendingDataReader.GetString("user_from").ToString())
            {
                //go on from here
            }

        }
        connection.Close();
    }

它从表friend_requests中选择user_from,其中user_to等于当前用户的用户名。事实上有多个字符串。我想在数据库中做一个foreach循环,在其中user_to=当前用户的用户名。

enter image description here

在这个例子中,我将循环4次,字符串将是Aluin,test123,XeKe和milanneke10。

我该如何处理?


5
您不需要使用foreach遍历任何内容。PendingDataReader.Read()返回的每条记录都是一个单独的字符串。在调试时,您是否看到了不同的内容? - Heretic Monkey
你的意思是什么?很抱歉,我在编码方面非常业余,我只学了几个月。我需要好友请求出现,这样我才能为每个字符串创建一个XAML对象。 - Ruben Versavel
在您的代码中设置一个断点,查看 PendingDataReader.GetString("user_from") 的值。这里是在Visual Studio中如何做到这一点的方法 - Heretic Monkey
1
不要直接在列上使用 ToStringDBNull.Value 会导致抛出异常,你应该确保值不为 null 再转换为字符串。 - Greg
1
@RubenVersavel 你可以在 while 循环中像在 foreach 循环中一样制作网格,或者你可以接受 @TomFarley 的答案。 - NetMage
显示剩余6条评论
1个回答

3
你可以创建一个列表来存储所有的值。
List<string> dataCollection = new List<string>();

while(PendingDataReader.Read())
{
    dataCollection.Add(PendingDataReader.GetString("user_from"));
}

@RufusL 你说得对,字典只是我脑海中第一个浮现的东西,因为我最近正在使用具有唯一索引键的数据库。我已将代码更改为使用List类,这应该可以让OP实现他所需的功能。 - Tom F
1
@RubenVersavel 使用 List(T) 类更新的代码应该可以解决这个问题。 - Tom F
这个完美地运行了,我可以在while循环后使用foreach循环来遍历列表。非常感谢! - Ruben Versavel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接