盾怪网教程:是一个免费提供流行杀毒软件教程、在线学习分享的学习平台!

完成树型结构(一)

时间:2024/12/27作者:未知来源:盾怪网教程人气:

[摘要]-------C++ Builder 这种结构十分简单,当修改元素间的所属关系时,你只需要修改 Parent Node 就可以了,比如把 ADO Control 作为 Program 的子项,只要将...
-------C++ Builder

这种结构十分简单,当修改元素间的所属关系时,你只需要修改 Parent Node 就可以了,比如把 ADO Control 作为 Program 的子项,只要将 ADO Control 所对应的 Parent Node 改为1。由此,不难看出这种结构简单,易用。

3. 用存储过程读取数据

如何检索数据,或许是我们最关心的。对于用户来说,在数据的表达上要易于理解。从上面的示例中,就可以看出:直观的表示法比显示数据存储结构更易于理解。

其中的关键在于如何得到元素之间的层次关系,有了层次关系,就能得到类似资源管理器那样的界面。

在这里,我们用存储过程完成该功能。在微软的众多有关 SQL 的文档中,有一段 SQL 代码非常经典,我们本着拿来主义的思想,将它修改一下,洋为中用。

CREATE PROC sp_ListFile(@Child_node int)
As
SET NOCOUNT ON
--declare var
DECLARE @lvl smallint --层次关系
DECLARE @c_ID int
DECLARE @article bit --是否为文章的标志
DECLARE @title varchar(150) --标题

--create temporary table
CREATE TABLE #stack (Child_node int,Lvl smallint)

--create target table
CREATE TABLE #FileList
(lvl smallint,
Child_node_ID int,
Article bit,
Title varchar(150) )

--initial
INSERT INTO #stack VALUES(@Child_node,0)
SELECT @Lvl = 0

--main loop
WHILE @Lvl > -1
BEGIN
IF EXISTS(SELECT * FROM #stack WHERE Lvl = @Lvl)
BEGIN
SELECT @Child_node = Child_node
FROM #stack
WHERE Lvl = @Lvl

SELECT @article = article,@title = title
FROM some_table
WHERE Child_node = @Child_node

INSERT INTO #FileList
VALUES(@Lvl,@Child_node, @article,@title)

DELETE FROM #stack
WHERE Lvl = @Lvl AND Child_node = @Child_node

INSERT INTO #stack
SELECT Child_node,@Lvl + 1
FROM some_table
WHERE Parent_node = @Child_node
IF @@ROWCOUNT > 0
SELECT @Lvl = @Lvl + 1
END
ELSE
SELECT @Lvl = @Lvl - 1
END
DELETE FROM #FileList
WHERE Lvl = 0
SELECT * FROM #FileList

输出结果:
lvl Child_node Article Title
1 1 0 Program
2 2 0 Visual Basic
3 5 1 ADO Control
2 3 0 Power Builder
2 4 0 C++ Builder

上面的存储过程可以有很多变形,比如按时间排序,指定检索深度等等,有的需要对数据库作相应调整。

4. 调用存储过程


调用存储过程有多种形式,我们只讨论如何调用上面的存储过程

Dim cnn
Dim rs
Dim id

Set cnn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")
cnn.Open "Provider=SQLOLEDB;.......................略
rs.Open "sp_listfile " & id,cnn


由于 Coolbel 不支持存储过程,我把结果集存为 XML 格式,以便于演示。 (出处:热点网络)

关键词:完成树型结构(一)




Copyright © 2012-2018 盾怪网教程(http://www.dunguai.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版