C#方法提供了System.InvalidCastException

时间:2018-12-19 14:26:13

标签: c# mysql

您好,我正在为我们需要使用数据库的学校编写应用程序。现在,我有一个无法修复的最后错误。我有一个组合框,您可以在其中选择一个足球联赛。然后该联盟的俱乐部出现在列表框中。根据您选择的俱乐部,该俱乐部中的球员会出现在另一个列表框中。

现在,我有一种方法可以获取发给该俱乐部后卫的平均发牌数。如果我首先选择一个联赛,俱乐部,球员,然后更改联赛并从另一个联赛中选择一个俱乐部,我的应用程序将崩溃。 它给了我这个错误

  

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);

            }

        }

0 个答案:

没有答案