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();应该在什么位置?
...全文
163 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说的对!

谢谢大家,接分去!
内容介绍: ASP.NET是微软.NET战略的一个重要成员,除了可以使用Visual C#、VB.NET、VisualC++.NET、JScript.NET等语言编写外,还可以使用第三方的.NET接口(如COBOL.NET、 Perl.NET等)进行编写。本书通过100个精彩实例,由浅入深介绍了ASP.NET网络程序设计的编程方法与实用技巧。为了方便读者学习与深入理解ASP.NET,本书将这100 个实例分为4篇,即基础编程实例、级编程实例、高级编程实例与混合编程实例。在每个实例,除了介绍ASP.NET所提供的基础知识点及编程技巧外,还介绍了ASP.NET在网络编程、图形编程、多媒体编程、Mobile(移动通信)等方面的重要应用及开发技术。本书附赠一张光盘,其包括全部100个实例源代码及可执行文件(详细内容请参见光盘的“本书配套光盘说明.txt”). 本书体系结构清晰,解释说明详尽,开发实例典型,适合于计算机编程用户、网络用户及对ASP.NET感兴趣的用户阅读,也可作为ASP.NET培训参考书。 书籍目录: 第1篇ASP.NET基础编程实例 实例1一个HTML化的ASP.NET程序 实例2ASP+WebForms广告轮换控制过程 实例3驱动器列表应用 实例4列出当前盘上目录和文件 实例5使用“文件预览”显示文件夹信息 实例6使用递归循环以显示目录列表 实例7在ASP.7NET随意创建图形信息 实例8在ASP.8NET显示事件日志记录(1) 实例9在ASP.9NET显示事件日志记录(2) 实例10在ASP.10NET使用DataGrid分页 实例11在ASP.11NET访问Excel2000/XP文件 实例12显示当前浏览器头信息 实例13利用ASP.NET获取主机名和IP地址 实例14由域名获取其IP地址 实例15由IP地址获得其域名 实例16ASP.NET的正则表达式应用 实例17主机远程控制与探测应用 实例18ASP.NET控件———AdRotator应用 实例19ASP.NET日历程序 实例20查看主机内存情况 实例21ASP.NET简易应用程序“Hello,22World!” 实例22读取Config.22Web配置文件 实例23显示BrowseCaps配置段内容 实例24写入文件操作与应用 实例25文件读操作及应用 实例26文件删除与应用 实例27ASP.NET异常处理及其应用 实例28AutoPostBack技术及其应用 实例29用户合法性验证与应用 实例30ASP.30NET列表框应用 实例31Calendar控件操作与应用 实例32用户操作验证与应用 实例33CompareValidator服务器比较控件操作与应用 实例34CustomValidator控件操作与应用 实例35服务器端控件ValidationSummary应用操作 实例36HtmlTable控件操作与应用 实例37在HTML控件运用样式 实例38在Web服务器控件运用样式

62,248

社区成员

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

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

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

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