Ten zapis
Data.Text += $"{reader.GetString("animals_name")};";
powoduje, że masz zwrócony ciąg (w tym przypadku do Data.Text)
Cat;Dog;Duck;Spider;Pigeon;Rat;Fish;
przy każdej iteracji w pętli while
reader.GetString("animals_name")
zawiera jedną wartość z pola "animals_name" plus znak ; (średnik)
zapis += łączy kolejne wartości
1 iteracja Data.Text += Cat;
2 iteracja Data.Text += Cat;Dog;
3 iteracja Data.Text += Cat;Dog;Duck;
4 iteracja Data.Text += Cat;Dog;Duck;Spider; itd.
jeżeli
... ciąg nazw zwierzaków, który może ulec zmianie
to nie możesz w prosty sposób użyć nazw zmiennych w stylu
string pierwszy_zwierzak = animal_name1;
string drugi_zwierzak = animal_name2;
w tym przypadku możesz posłużyć się tablicą lub listą np.
using System.Collections.Generic;
...
List<string> animal_name = new List<string>();
wtedy np.
List<string> animal_name = new List<string>();
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
animal_name.Add(reader.GetString("animals_name"));
}
animal_name[0]; // animal_name1;
animal_name[1]; // animal_name2;
można też posłużyć się Dictionary
using System.Collections.Generic;
...
Dictionary<string, string> dict = new Dictionary<string, string>();
wtedy np.
Dictionary<string, string> animal_name = new Dictionary<string, string>();
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
animal_name.Add(reader.GetString("animals_name"), reader.GetString("animals_name"));
// lub np.
// animal_name.Add(reader.GetString("animal_name"), reader.GetString("animal_description"));
}
// Cat;Dog ...
animal_name["Cat"]; // animal_name1;
animal_name["Dog"]; // animal_name2;
...
string key = "Dog";
if (animal_name.TryGetValue(key, out value))
{
Console.WriteLine("{0} = {1}", key, value);
}
...
string key = "Dog";
if (animal_name.ContainsKey(key))
{
Console.WriteLine("{0} = {1}", key, animal_name[key]);
}