在递归调用时dt.Tables[0].Rows.Count(红色部分)有问题,下一次调用时dt.Tables[0].Rows.Count内容改变,当返回时出错。请问如何解决这个问题。
不要告诉我把循环去了,那样虽然也能实现,但速度比较慢private void setState(string id,string upid,string state)
{
if(id!="")
{
db1.ExecuteCommand("update manage_site set state="+state+" where id='" + id + "'");
dt = db1.GetDataSet("select id from manage_site where moduleupid='" + id + "'");
if (dt.Tables[0].Rows.Count == 0)
{
return;
}
else
{
for (int i = 0; i < dt.Tables[0].Rows.Count; i++)
setState("", dt.Tables[0].Rows[i]["id"].ToString(),state);
db1.ExecuteCommand("update manage_site set state=" + state + " where moduleupid='" + id + "'");
}
}
else
{
dt = db1.GetDataSet("select id from manage_site where moduleupid='" + upid + "'");
if (dt.Tables[0].Rows.Count == 0)
{
return;
}
else
{
for (int i = 0; i < dt.Tables[0].Rows.Count; i++)
setState("", dt.Tables[0].Rows[i]["id"].ToString(),state);
db1.ExecuteCommand("update manage_site set state=" + state + " where moduleupid='" + upid + "'");
}
}
}
不要告诉我把循环去了,那样虽然也能实现,但速度比较慢private void setState(string id,string upid,string state)
{
if(id!="")
{
db1.ExecuteCommand("update manage_site set state="+state+" where id='" + id + "'");
dt = db1.GetDataSet("select id from manage_site where moduleupid='" + id + "'");
if (dt.Tables[0].Rows.Count == 0)
{
return;
}
else
{
for (int i = 0; i < dt.Tables[0].Rows.Count; i++)
setState("", dt.Tables[0].Rows[i]["id"].ToString(),state);
db1.ExecuteCommand("update manage_site set state=" + state + " where moduleupid='" + id + "'");
}
}
else
{
dt = db1.GetDataSet("select id from manage_site where moduleupid='" + upid + "'");
if (dt.Tables[0].Rows.Count == 0)
{
return;
}
else
{
for (int i = 0; i < dt.Tables[0].Rows.Count; i++)
setState("", dt.Tables[0].Rows[i]["id"].ToString(),state);
db1.ExecuteCommand("update manage_site set state=" + state + " where moduleupid='" + upid + "'");
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货