我用的是.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 + "'";
但是不能实现循环调用,谁能帮我完成这个程序啊~

解决方案 »

  1.   

    使用存储过程实现--创建存储过程
    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
      

  2.   

    我的意思是,已经和数据库进行了数据绑定,但是想把数据库中的数据用一个树状的结构表示出来(我选用了TreeView控件实现),通过获得子树的ID找到其父节点的id,依次类推,然后以树状形式表示出来。
    现在可以实现的只有一次循环,即只能表示第一层树的结构,再往下就不循环了,想知道怎么样能实现这样的递归调用?