c#读取数据库中数据的问题~

yueyebohe 2007-11-03 03:09:24
我用的是.NET 2005的C#语言编写的程序,想用TreeView控件实现在数据库中调用数据,实现一个树状的结构~数据库是SQL Server 2005,表中的数据为:
childid childnode parentid
1 A 0
2 B 1
3 C 1
4 D 2
5 E 3
6 F 3

也就是除了A之外,B、C的父节点都是A,即让B、C的父节点(parentid)等于的是A的节点值(childid),然后依次类推。
我用的语句是:
string selectCmd = select childid from 表 where parentid = '" + childid + "'";
但是不能实现循环调用,谁能帮我完成这个程序啊~
...全文
113 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yueyebohe 2007-11-04
  • 打赏
  • 举报
回复
我的意思是,已经和数据库进行了数据绑定,但是想把数据库中的数据用一个树状的结构表示出来(我选用了TreeView控件实现),通过获得子树的ID找到其父节点的id,依次类推,然后以树状形式表示出来。
现在可以实现的只有一次循环,即只能表示第一层树的结构,再往下就不循环了,想知道怎么样能实现这样的递归调用?
NewUser2008 2007-11-03
  • 打赏
  • 举报
回复
把业务逻辑交给数据库?
boblaw 2007-11-03
  • 打赏
  • 举报
回复
使用存储过程实现

--创建存储过程
CREATE PROCEDURE dbo.GetAllChildID
@ParentID INT
AS
IF @ParentID IS NULL RETURN
DECLARE @OldRecordCnt INT
DECLARE @CurRecordCnt INT
DECLARE @tmp Table([ID] INT PRIMARY KEY NOT NULL)
INSERT INTO @tmp VALUES(@ParentID)
SET @OldRecordCnt=1
WHILE 1=1
BEGIN
INSERT INTO @tmp SELECT a.[ChildID] FROM TableName a INNER JOIN @tmp b ON a.[ParentID]=b.[ID]
WHERE a.[ChildID] NOT IN (SELECT [ID] FROM @tmp)
SELECT @CurRecordCnt=COUNT(*) FROM @tmp
IF @CurRecordCnt=@OldRecordCnt
BREAK
ELSE
SET @OldRecordCnt=@CurRecordCnt
END
DELETE FROM @tmp WHERE [ID]=@ParentID
SELECT a.* FROM TableName a INNER JOIN @tmp b ON a.ChildID=b.[ID]
GO
wuhq030710914 2007-11-03
  • 打赏
  • 举报
回复
LZ 想用一条语句就实现绑定,不可能吧!

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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