我在填写字典时遇到了一些问题,然后将数据放入ListBox中。 这是我的代码:
Dictionary<int, int> items = new Dictionary<int, int>();
MySqlCommand cmd = new MySqlCommand(query1, c.Connection);
rdr = cmd.ExecuteReader();
while (rdr.Read()) {
//InvalidCastException HERE
items.Add((int)rdr["artikel_id"], (int)rdr["sum(aantal)"]);
}
for (int i = 0; i < items.Count(); i++) {
if (items.ElementAt(i).Value <= 0) {
listBoxStrings.Add("artikel_id: " + items.ElementAt(i).Key + ", besteld: " + items.ElementAt(i).Value);
}
}
foreach (string s in listBoxStrings) {
//listbox
lb.Items.Add(s);
}
答案 0 :(得分:1)
首先,检查rdr [&#34; artikel_id&#34;]和rdr [&#34; sum(aantal)&#34;]都不为空。
如果它们都不为null,请通过执行rdr [&#34; artikel_id&#34;]。GetType()。FullName并检查您是否可以将其实际转换为Int32来验证其运行时类型。
答案 1 :(得分:1)
看起来你没有正确地拉你的专栏。试试这个,看看它是否/例外。
Dictionary<int, int> items = new Dictionary<int, int>();
MySqlCommand cmd = new MySqlCommand(query1, c.Connection);
rdr = cmd.ExecuteReader();
while (rdr.Read()) {
//InvalidCastException HERE
int value1 = (int)rdr["artikelid"];
int value2 = (int)rdr["besteid"];
items.Add(value1,value2);
}