SQL索引超出范围异常

时间:2015-03-13 13:09:07

标签: c# mysql sql indexoutofrangeexception

当我尝试执行下面显示的SQL查询时,我得到一个IndexOutOfRangeException。我无法弄清楚它是什么原因,在其他SO页面上它说它可能是因为你试图从不存在的字段中获取数据但我确定它存在并且当我更改了两个请求的字段时来自" ADRES"和" TAAL"到" LEV"就像上面的那个只有2个底部的人会拒绝工作,而最高要求" LEV"仍然有效。 " ADRES"是一个8长的varchar" TAAL"是一个1长的varchar字段

try
{
  //BESTEL,[PLAN],LEV,ADRES,TAAL
  SqlCommand getlist = new SqlCommand("select * from BESW where BEST=@best", Connectie.connMEVO);
  getlist.Parameters.Add("@best", SqlDbType.VarChar).Value = data.corrigeerbestnr;
  DRorder = getlist.ExecuteReader();
  while (DRorder.Read())
  {
    dateTimePicker1.Value = Convert.ToDateTime(DRorder["BESTEL"]);
    dateTimePicker2.Value = Convert.ToDateTime(DRorder["PLAN"]);
    comboBox1.Text = DRorder["LEV"].ToString();
    comboBox2.Text = DRorder["ADRES"].ToString();
    textBox8.Text = DRorder["TAAL"].ToString();
  }
}
catch (Exception er) { MessageBox.Show("" + er); }
编辑:似乎如果我将查询拆分如下所示,那么它确实有用,我真的不明白为什么会这样。

try
{
  //BESTEL,[PLAN],LEV,ADRES,TAAL
  SqlCommand getlist = new SqlCommand("select BESTEL,[PLAN],ADRES from BESW where BEST=@best", Connectie.connMEVO);
  getlist.Parameters.Add("@best", SqlDbType.VarChar).Value = data.corrigeerbestnr;
  DRorder = getlist.ExecuteReader();
  while (DRorder.Read())
  {
    dateTimePicker1.Value = Convert.ToDateTime(DRorder["BESTEL"]);
    dateTimePicker2.Value = Convert.ToDateTime(DRorder["PLAN"]);
    comboBox2.Text = DRorder["ADRES"].ToString();
  }
  SqlCommand getlist2 = new SqlCommand("select LEV from BESW where BEST=@best", Connectie.connMEVO);
  getlist2.Parameters.Add("@best", SqlDbType.VarChar).Value = data.corrigeerbestnr;
  DRorder = getlist2.ExecuteReader();
  while (DRorder.Read())
  {
    comboBox1.Text = DRorder["LEV"].ToString();
  }
  SqlCommand getlist3 = new SqlCommand("select TAAL from BESW where BEST=@best", Connectie.connMEVO);
  getlist3.Parameters.Add("@best", SqlDbType.VarChar).Value = data.corrigeerbestnr;
  DRorder = getlist3.ExecuteReader();
  while (DRorder.Read())
  {
    textBox8.Text = DRorder["TAAL"].ToString();
  }
}
catch (Exception er) { MessageBox.Show("" + er); }

2 个答案:

答案 0 :(得分:1)

可能存在两个错误 1.任何列都可能丢失或拼写错误。 2.您正在尝试将该属性设置为一个组合框,该组合框可能没有查询的数据作为其项目。

希望它有所帮助。

编辑:说,组合框有两个项目“是”和“否”,您可能会尝试将“它们都不是”设置为当前项目。

答案 1 :(得分:-2)

它表示,当我将字段拆分为单独的查询时,它们只是工作,查询不会被更改,它只是没有1个查询中的所有行。我仍然不知道为什么会这样做,但使用单独的查询至少可以解决这个问题。