【发布时间】:2013-12-07 17:34:46
【问题描述】:
错误:
超出范围的索引必须为非负数且小于集合参数名称索引的大小
代码:
try
{
int i = 0;
Query = "select * from customeritems where cid = '" + GlobalVars.id + "';";
cmd = new SQLiteCommand(Query, GlobalVars.conn);
dr = cmd.ExecuteReader();
if ((dr != null) && (dr.HasRows))
{
dgvItems.Rows.Clear();
while (dr.Read())
{
dgvItems.Rows.Add();
dgvItems.Rows[i].Cells[0].Value = dr.GetValue(0).ToString();
dgvItems.Rows[i].Cells[1].Value = (i + 1).ToString();
dgvItems.Rows[i].Cells[2].Value = dr.GetValue(2).ToString();
dgvItems.Rows[i].Cells[3].Value = dr.GetValue(3).ToString();
dgvItems.Rows[i].Cells[4].Value = dr.GetValue(4).ToString();
dgvItems.Rows[i].Cells[5].Value = dr.GetValue(5).ToString();
i++;
}
}
dr.Close();
cmd.Dispose();
}
我在 i++ 上设置了断点。此时它给出了上述错误。有任何想法吗?
附:我得到了第一条记录很好
【问题讨论】:
-
c# ..................................
-
哪一行抛出异常?
-
我在while循环的每一行都设置了断点。循环运行一次,直到 i++。此时我按 F5 出现错误“索引超出范围等”
-
我可以看到您使用 GetValue(0) 从数据库中获取值,但您缺少 GetValue(1) 因为第二列是行索引。所以也许你应该移动索引并且数据库中的最后一列是 4 而不是 5?博士GetValue(4)?基本上我的意思是你的查询结果中有 5 列而不是 6 列?
-
VS 在抛出异常时已经停止执行,你没有在每一行设置断点。
标签: c# datagridview indexoutofboundsexception