gpt4 book ai didi

c# - 将元素插入列表时索引超出范围异常

转载 作者:太空宇宙 更新时间:2023-11-03 21:32:59 25 4
gpt4 key购买 nike

我不断收到以下错误:“索引超出范围。必须为非负数且小于集合的大小”,同时执行以下代码:

 try
{
string connectionstring = "server=localhost;user id=root;database=itemdb;password=root";
MySqlConnection conn = new MySqlConnection(connectionstring);
conn.Open();
MySqlCommand cmd = new MySqlCommand("SELECT item.item_name,location.city,time.month,SUM(unit_sales) FROM sales_fact,time,item,location WHERE(sales_fact.item_key = item.item_key AND sales_fact.location_key = location.location_key AND sales_fact.time_key = time.time_key) GROUP BY item.item_name", conn);
MySqlDataReader dr = cmd.ExecuteReader();
int c = 0;
List<Cube1> cubelist = new List<Cube1>();
while (dr.Read())
{
//i++;
cubelist[c].itemname = dr.GetValue(0).ToString();
cubelist[c].city = dr.GetValue(1).ToString();
cubelist[c].month = dr.GetValue(2).ToString();
cubelist[c].totalsales = (int)dr.GetValue(3);
MessageBox.Show(cubelist[0].totalsales.ToString());
c++;
}
dr.Close();
MySqlDataAdapter da = new MySqlDataAdapter(connectionstring, conn);
DataSet dt = new DataSet();
da.Fill(dt);
dataGridView1.DataSource = dt;
conn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

我哪里出错了?

最佳答案

您的列表是空的,但您正在尝试访问它的元素。您应该使用 List<T>.Add先方法。在您的代码中:

new List<Cube1>(100);

100仅指定 Capacity ,它不是列表的大小。它用于分配指定长度的数组,以避免每次向列表添加新项目时都重新分配。

cubelist.Add(new Cube());
cubelist[c].itemname = dr.GetValue(0).ToString();
cubelist[c].city = dr.GetValue(1).ToString();
...

关于c# - 将元素插入列表时索引超出范围异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23329084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com