2013-03-01 51 views
0

我用C夏普有没有排在5位

我运行调试器看到笏之后得到这个错误是错误的代码:

{“没有排在第5位“} {System.Exception的} System.IndexOutOfRangeException

public DataSet FindData(string ID, string pass) 
    { 
     InitializeConnection(); 
     m_oCn.Open(); 
     DataSet thisDataSet = new DataSet(); 
     DataSet foundDataSet = new DataSet(); 
     try 
     { 
      m_oDA.Fill (thisDataSet, "Login"); 
      for (int n = 0; 0 < thisDataSet.Tables["Login"].Rows.Count ; n++) 
      { 
       if (thisDataSet.Tables["Login"].Rows[n]["UserName"].ToString() == ID) 
       { 
        if (thisDataSet.Tables["Login"].Rows[n]["Password"].ToString() == pass) 
        { 
         m_oDA.Fill(foundDataSet,n,1,"Login"); 


        } 
       } 
      } 
     } 
     catch 
     { 
     } 
     finally 
     { 
      m_oCn.Close(); 
      m_oCn = null; 
     } 
     return foundDataSet; 

回答

2
for (int n = 0; 0 < thisDataSet.Tables["Login"].Rows.Count; n++) 

您的循环的条件检查零小于行数,这意味着你的循环将无限期地运行(或直到你访问一个不存在的指数)。您可能的意思是检查n是否小于行数:

for (int n = 0; n < thisDataSet.Tables["Login"].Rows.Count; n++) 
+0

谢谢好的我现在得到它..解释说明。 (Y) – user2121793 2013-03-02 02:28:20

0

你的循环,如果有缺陷的:

for (int n = 0; 0 < thisDataSet.Tables["Login"].Rows.Count ; n++) 

翔uldn't认为是:

for (int n = 0; n < thisDataSet.Tables["Login"].Rows.Count ; n++)