SQL 索引超出范围异常

SQL index out of range exception

当我尝试执行下面显示的 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); }

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

希望对您有所帮助。

编辑: 比如说,组合框有两个项目 "Yes" 和 "No",您可以尝试将 "Neither of them" 设置为当前项目。

看来,当我将字段拆分为单独的查询时,它们就可以正常工作,查询没有改变,它只是在 1 个查询中没有所有行。我仍然不太清楚为什么这样做,但使用单独的查询至少可以解决这个问题。