我正在使用C Sharp
运行调试器后出现此错误,以查看代码错误:
{“位置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;
答案 0 :(得分: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++)
答案 1 :(得分:0)
你的循环如果有缺陷:
for (int n = 0; 0 < thisDataSet.Tables["Login"].Rows.Count ; n++)
不应该是:
for (int n = 0; n < thisDataSet.Tables["Login"].Rows.Count ; n++)