将数据库中的行添加到数据网格视图中

时间:2013-12-07 17:34:46

标签: c# datagridview indexoutofboundsexception

错误:

  

索引超出范围必须是非负数且小于集合参数名称索引的大小

代码:

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 ++上设置了断点。此时它给出了上述错误。有任何想法吗?

P.S。我得到了第一个记录

1 个答案:

答案 0 :(得分:0)

我最好的猜测是你在dgvItems中违反PK约束或空值约束。当一个插入工作时,这通常是问题的根源,然后下一个插入失败。此外,如果i大于5,那么看起来你会遇到问题。