0

Cシャープを使っています

デバッガーを実行してコードに問題があることを確認すると、次のエラーが表示されます。

{"位置 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 に答える