我的数据库中有2个不同的表格。在eredivisie中的所有俱乐部中为1,在所有球员中为1。 表格1 idclubs,名称,冠军,建立 表2 idclubs,idplayer,nameplayer和有关他的更多信息 现在我有2个列表框,在第一个列表框中,我显示了我拥有的所有俱乐部。但是,如果我在第一个列表框中单击一个俱乐部,那么第二个列表框中将显示该俱乐部的球员,因此我该如何做。 据我所提供的代码;
public List<Spelers> Getspelers(string naam)
{
List<Spelers> Result = new List<Spelers>();
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
MySqlCommand selectSpelersCommand = new MySqlCommand("select naamspeler from spelers, clubs where clubs.idClubs = @idClubs and spelers.idClubs = @idClubs", connection);
selectSpelersCommand.Parameters.Add(new MySqlParameter("naam", naam));
using (var reader = selectSpelersCommand.ExecuteReader())
{
while (reader.Read())
{
Spelers speler = new Spelers();
speler.IdClubs = reader.GetInt32(0);
speler.IdSpelers = reader.GetInt32(1);
speler.NaamSpeler = reader.GetString(2);
speler.Doelpunten = reader.GetInt32(3);
speler.Gelekaarten = reader.GetInt32(4);
speler.Rodekaarten = reader.GetInt32(5);
Result.Add(speler);
}
}
}
return Result;
}
然后在我的主要代码中:
private void listboxClubs_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
DatabaseManager db = new DatabaseManager();
List<Spelers> speler = db.Getspelers(listboxClubs.SelectedItem.ToString());
listboxspelers.Items.Clear();
foreach (Spelers spelers in speler)
{
listboxspelers.Items.Add(spelers);
}
}
现在,如果我在第一个框中单击一个俱乐部,它将发送字符串。但是我该如何编码,这样程序才能从该俱乐部查找idClubs,然后在另一张表中查找该俱乐部的球员。如果有人可以帮助我或者链接其他帖子,我将非常感激。
答案 0 :(得分:0)
您的查询是罪魁祸首
select Spelers.naam from clubs, spelers where clubs.idClubs = @idClubs and spelers.idClubs = @idClubs
通知
select Spelers.naam from
对sql来说,它只给我naam列数据,您应该使用*或带有“,”分隔的列名列表
select Spelers.naam from clubs, spelers where clubs.idClubs = @idClubs and spelers.idClubs = @idClubs
或
select Spelers.naam, spelers.idClubs from clubs, spelers where clubs.idClubs = @idClubs and spelers.idClubs = @idClubs
更新:
您应该在列表框中添加属性,而不是对象
添加此
listboxspelers.Items.Add(spelers.NaamSpeler);
代替
listboxspelers.Items.Add(spelers);