0

我正在使用 C Sharp

运行调试器以查看 wat 代码错误后出现此错误:

{“位置 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;
4

2 回答 2

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

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

for (int n = 0; n < thisDataSet.Tables["Login"].Rows.Count; n++)
于 2013-03-01T01:07:04.883 回答
0

如果有缺陷,您的循环:

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

那不应该是:

for (int n = 0; n < thisDataSet.Tables["Login"].Rows.Count ; n++)
于 2013-03-01T01:06:52.160 回答