asp.net中的递归循环问题!急

mastermanager 2009-10-16 11:14:48
asp.net中的递归循环问题!急

string newstr = "";
public string showtreenume_danye(int tids, string tbname, string objurl, int steeps)
{
string sql_danye = "select tname,id,tn from " + tbname + " where tn=" + tids + " order by px asc";
fx_DataReader dr_danye = new fx_DataReader(sql_danye);
while (dr_danye.Read())
{
if (tids == 0)
{
newstr = newstr + "a.add(" + (Convert.ToInt32(dr_danye["id"]) + Convert.ToInt32(steeps)) + ",0,'" + dr_danye["tname"] + "','" + objurl + dr_danye["id"] + "');\n";
}
else
{
newstr = newstr + "a.add(" + (Convert.ToInt32(dr_danye["id"]) + Convert.ToInt32(steeps)) + "," + (Convert.ToInt32(dr_danye["tn"]) + Convert.ToInt32(steeps)) + ",'" + dr_danye["tname"] + "','" + objurl + dr_danye["id"] + "');\n";
}
this.showtreenume_danye(Convert.ToInt32(dr_danye["id"].ToString()), tbname, objurl, steeps);
}
//dr_danye.Close();
return newstr;
}


这个是代码,请问这个关闭dr_danye.Close();应该在什么位置?
...全文
159 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
lishunli86 2009-10-16
  • 打赏
  • 举报
回复
用完一个关一个
这个安全
a76477140 2009-10-16
  • 打赏
  • 举报
回复
建议不要这样子写啊!
fengjian_428 2009-10-16
  • 打赏
  • 举报
回复



string newstr = "";
public string showtreenume_danye(int tids)
{
string sql_danye = "select * from aaa";
fx_DataReader dr_danye = new fx_DataReader(sql_danye);
while (dr_danye.Read())
{

if (tids == 0)
{
newstr = newstr + "111";
}
else
{
newstr = newstr + "222";
}
string myid = dr_danye["id"].ToString();


this.showtreenume_danye(Convert.ToInt32(myid));
}
dr_danye.Close();
return newstr;
}
刚才发的错了 想想应该放这里


用完一个关一个
bbsxun 2009-10-16
  • 打赏
  • 举报
回复
感觉你写的代码很乱,其实你可以引用SQLhelp.cs里边的ExcutReader()在调用前采用USing不就成了,何必自己写数据连接块呢?
liaoyukun111 2009-10-16
  • 打赏
  • 举报
回复
JF
mastermanager 2009-10-16
  • 打赏
  • 举报
回复
代码我简化了下

string newstr = "";
public string showtreenume_danye(int tids)
{
string sql_danye = "select * from aaa";
fx_DataReader dr_danye = new fx_DataReader(sql_danye);
while (dr_danye.Read())
{

if (tids == 0)
{
newstr = newstr + "111";
}
else
{
newstr = newstr + "222";
}
string myid = dr_danye["id"].ToString();
this.showtreenume_danye(Convert.ToInt32(myid));
//dr_danye.Close();
}
return newstr;
}

我就像问下这个dr_danye.Close();应该怎么放在那个位置才能达到最正确的关闭
fengjian_428 2009-10-16
  • 打赏
  • 举报
回复
出口就是while (dr_danye.Read())

代码乱 但是功能应该正常
问题是你到底想问什么
mastermanager 2009-10-16
  • 打赏
  • 举报
回复


有道理。详细点行吗?现在我脑子一片乱麻,有急需要!

[Quote=引用 7 楼 freesarge 的回复:]
递归需要一个出口,就是在判断是否继续执行递归的地方。
[/Quote]

上一个引用错了,不好意思!
mastermanager 2009-10-16
  • 打赏
  • 举报
回复
有道理。详细点行吗?现在我脑子一片乱麻,有急需要!

[Quote=引用 5 楼 fengjian_428 的回复:]
dr_danye.Close();
this.showtreenume_danye(Convert.ToInt32(dr_danye["id"].ToString()), tbname, objurl, steeps);
       

放在递归调用的上面
       
[/Quote]
SK_Aqi 2009-10-16
  • 打赏
  • 举报
回复
    public string showtreenume_danye(int tids, string tbname, string objurl, int steeps)
{
Response.Write(DateTime.Now.ToString() + "</br>");
//记录时间你测试一下时间差
string sql_danye = "select tname,id,tn from " + tbname + " where tn=" + tids + " order by px asc";
fx_DataReader dr_danye = new fx_DataReader(sql_danye);
while (dr_danye.Read())
{
if (tids == 0)
{
newstr = newstr + "a.add(" + (Convert.ToInt32(dr_danye["id"]) + Convert.ToInt32(steeps)) + ",0,'" + dr_danye["tname"] + "','" + objurl + dr_danye["id"] + "');\n";
}
else
{
newstr = newstr + "a.add(" + (Convert.ToInt32(dr_danye["id"]) + Convert.ToInt32(steeps)) + "," + (Convert.ToInt32(dr_danye["tn"]) + Convert.ToInt32(steeps)) + ",'" + dr_danye["tname"] + "','" + objurl + dr_danye["id"] + "');\n";
}
this.showtreenume_danye(Convert.ToInt32(dr_danye["id"].ToString()), tbname, objurl, steeps);
dr_danye.Close(); //马上去关闭不影响效率好像,放这里
}
//dr_danye.Close();最后放这里测试一下时间是多少?
Response.Write(DateTime.Now.ToString() + "</br>");
return newstr;
}
指间的风 2009-10-16
  • 打赏
  • 举报
回复
递归需要一个出口,就是在判断是否继续执行递归的地方。
草根醉秋意 2009-10-16
  • 打赏
  • 举报
回复
你这个是一张表里面的树吧?代码写的太乱了,建议你去修改下表的结构或者是寻找另外的解决方法。
fengjian_428 2009-10-16
  • 打赏
  • 举报
回复
dr_danye.Close();
this.showtreenume_danye(Convert.ToInt32(dr_danye["id"].ToString()), tbname, objurl, steeps);


放在递归调用的上面
mastermanager 2009-10-16
  • 打赏
  • 举报
回复
有没有高人啊!可以再加分的!急等
飞不动 2009-10-16
  • 打赏
  • 举报
回复
为什么一定要用DataReader呢,用DataTable不就行了吗?
mastermanager 2009-10-16
  • 打赏
  • 举报
回复
危险?
草根醉秋意 2009-10-16
  • 打赏
  • 举报
回复
数据库操作放在递归里面是一种很危险的写法。
mastermanager 2009-10-16
  • 打赏
  • 举报
回复
好了,问题已经解决了,虽然大家都很是帮忙但是一点作用都没有起,
原因出在datareader不能用嵌套循环,可以使用表格datatable。

echeng192说的对!

谢谢大家,接分去!

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧