2015-03-13 99 views
-1

当我尝试执行下面显示的SQL查询时,我得到一个IndexOutOfRangeException。我无法弄清楚为什么它在其他SO页面上说它可能是因为你试图从一个不存在的字段获取数据,但我确信它存在,并且当我将两个请求字段从“ ADRES“和”TAAL“改为”LEV“,就像上面那个只有2个底部的那个会拒绝工作,而对于”LEV“的最高要求仍然有效。 “ADRES”是8 LONG VARCHAR和“塔尔”是1个LONG VARCHAR场SQL索引超出范围例外

try 
{ 
    //BESTEL,[PLAN],LEV,ADRES,TAAL 
    SqlCommand getlist = new SqlCommand("select * from BESW where [email protected]", 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 [email protected]", 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 [email protected]", 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 [email protected]", 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); } 
+0

你调试了你的代码吗?在哪一行你会得到这个错误? – 2015-03-13 13:09:56

+0

哪一行引发异常?该行使用的索引是什么?运行时该对象上可用的索引是什么? – David 2015-03-13 13:11:53

+0

@大卫combobox1工作正常,但只要它到达combobox2它给出了错误,当我改变了顺序,所以combobox2是我注意到的查询的最后一个textbox8也给了这个错误。如果我把这两个作为评论查询将正常工作,我也试图设置他们使用“LEV”的字段,因为那一个为combobox1工作,但它仍然给这些错误2 – maam27 2015-03-13 13:12:13

回答

-2

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

+0

我不知道为什么有人会downvote我对我自己的问题的评论...即时通讯发布此作为解决方法,因为我还没有得到/找到一个真正的解决方案,如果有一个在这个职位上提交,我只会将其中一个设置为awnser。但我不认为我的问题在我的问题上毫无用处。 – maam27 2015-03-13 13:55:03

+0

这个答案并没有真正描述所提出的解决方案,对任何可能试图解决相同问题的人都没有多大用处。 “将字段拆分为单独的查询”和“没有1个查询中的所有行”是非常含糊的语句,并且不会添加任何有意义的解决方案信息。你基本上说,“我设法解决这个问题。”这很好,你找到了一个解决方案,以满足自己的需求,但这个答案没有任何目的来解释。 – David 2015-03-13 13:57:10

+0

我知道它可能不会帮助其他人解决这个问题,我不是说这是最后的东西,但我只是发布这个,说它确实对我有用,如果我找到一个解决方案,它会张贴的c – maam27 2015-03-13 16:04:38

1

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

希望它有帮助。

编辑:说,组合框有两个项目“是”和“否”,你可能会试图设置“他们都不是”作为其当前项目。

+0

我只是试图设置数据库中的数据作为组合框的文本,就像用户在其中键入内容时一样,并且不能解释为什么文本框出现相同的错误 – maam27 2015-03-13 13:30:00

+0

@ maan27:您设置的文本在组合框中必须在该组合框的值列表中。否则超出范围(如您的例外所示)。 – 2015-03-13 13:33:42

+0

也许你可以测试它通过使用两个文本框代表组合框来确认,如果这是问题... – 2015-03-13 13:35:51