您好,我正在为我们需要使用数据库的学校编写应用程序。现在,我有一个无法修复的最后错误。我有一个组合框,您可以在其中选择一个足球联赛。然后该联盟的俱乐部出现在列表框中。根据您选择的俱乐部,该俱乐部中的球员会出现在另一个列表框中。
现在,我有一种方法可以获取发给该俱乐部后卫的平均发牌数。如果我首先选择一个联赛,俱乐部,球员,然后更改联赛并从另一个联赛中选择一个俱乐部,我的应用程序将崩溃。 它给了我这个错误
System.InvalidCastException:无法将对象从DBNull强制转换为其他类型
这是我正在谈论的方法的代码。
public string GetGemKaart(string selecteditem)
{ //label gem kaarten per verdediger (club stat.)
using (MySqlConnection mysqlcon = new MySqlConnection(ConnectionString))
{
MySqlCommand mysqlCmd = mysqlcon.CreateCommand();
mysqlCmd.CommandText = "SELECT (AVG(GeleKaarten) + AVG(RodeKaarten)) FROM Spelers, clubs where clubs.naamClub = '" + selecteditem + "' and spelers.idclubs = clubs.idClubs and spelers.positie = 'V'";
mysqlcon.Open();
int returnvalue = (int)Convert.ToInt32(mysqlCmd.ExecuteScalar());
return returnvalue.ToString();
}
}
以及我调用此方法的代码:
private void ListboxClubs_SelectionChanged(object sender, SelectionChangedEventArgs e)
{ // Update de kampioenschappen en opgericht label wanneer een club is geselecteerd en laad spelers
if (listboxClubs != null && listboxClubs.SelectedItem != null)
{
string SelectedItem = listboxClubs.SelectedItem.ToString();
//laad spelers
List<Spelers> allspelers = db.Getspelers(SelectedItem);
listboxspelers.ItemsSource = allspelers;
//clubstatistieken
lblkampioen.Content = "Aantal kampioenschappen: " + db.Getkampioen(SelectedItem);
lblopgericht.Content = "Opgericht: " + db.Getopgericht(SelectedItem);
lblgemdoel.Content = "Gem. Doelpunten Per Aanvaller: " + db.GetGemDoel(SelectedItem);
lblgemkaart.Content = "Gem Kaarten Per Verdediger:" + db.GetGemKaart(SelectedItem);
}
}