• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    DBTree 1.3.2

    1.3.2的修改

    1. 对 InsertNode进行了修改,不会再发生传送的节点id有错误而默认插入到根下的行为。 (出于安全考虑而去掉)
    2. 完善了SubTree函数
    3. 添加了path函数可以得到路径
    4. 添加了alterNode可以修改节点名称以及在兄弟节点中的位置。

    许可:GUN LGPL


    测试地址:http://lxbzj.com/product/dbtree/index.asp

    DBTree使用说明

    目录

    1. 简介
    2. 特点
    3. 如何使用

     

    简介

    DBTree是database tree的缩写。意思是数据库中的树形结构。

    DBTree是一个勇于数据库服务器环境中的,在数据库中记录树形数据结构的快速解决方案,即人们通常说的无限级目录问题,本文档统称为树,而且是树结构在数据库中的实现。

    DBTree包含了各种不同的版本:asp+access、等等。

    特点

    通常情况下,树在数据库中实现的时候采用的是树的双亲表示法,设一个编号字段id,和一个父亲编号字段parent_id,来实现树形结构。这种数据结构的特点是:操作简单,几乎不用维护,然而优点带来的问题是对树进行遍历的时候系统开销极大,需要进行递归操作,因此不能够无限制的增加树的深度。普遍采用了异步读取的方式来减少系统开销。一些改进的方法也避免不了这一问题。

    在绝大多数情况下,服务器上要求对树的遍历任务占据了对树的操作的任务的大部分,可见如果针对数遍历来做优化能极大地提高效率减轻服务器负担。

    或者还是采用双亲表示法,采用异步读取才减轻系统开销,但是这样依然不能解决例如树的深度、路径、删除等的问题

    在本程序中采用了更适应遍历的数的表示结构。能极大地降低系统开销,也能很优秀的解决一些树的高级操作,更适应于数据库。

    如何使用

    使用本程序,需要预先准备一个数据库,且设置好数据库联接。

    1.数据库的定义:

    数据库中表(Tree)的定义(access)
    字段名 字段类型 必填 默认值 其他 索引 说明
    id 数字     自动编号 有(无重复) 节点的唯一编号
    p_id 长整型 0     节点父亲编号值
    name 文本 新建文件夹 不允许为空字符串   节点名称
    porder 长整型     有(有重复) 节点的先序排序号
    dep 长整型 1     节点深度值
    del 布尔 Flase     是否删除
    附注:字段名仅仅为默认的字段名,如果您不指定其他的字段名的话,程序就假定您的字段和表名名为默认的。

    2.在需要使用的页面使用服务器包含命令:!--#include file="dbtree.asp" -->

    3.初始化一个对象实例,然后初始化数据库联接字符串和其他变量

    %@ LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    % option explicit 'TRANSACTION = Required%>
    !--#include file="dbtree.asp" -->
    %
    Dim MM_btree_STRING '数据库联接字符串
    MM_btree_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "server.mappath("tree.mdb")
    %>
    %
    dim tree
    set tree=new DBtree
    tree.conn=MM_btree_STRING '指定联接字符串
    tree.table="tree"'制定表名
    tree.id="id"'制定列名
    tree.p_id="p_id"
    tree.porder="porder"
    %>

    4接下来就可以对树进行各种操作了:

    实例:

    1.将树显示为列表:

    %
    Dim arr1(1,0),arr2(1,0),cache
    arr1(0,0) = "ul>"
    arr1(1,0) = "/ul>"
    arr2(0,0) = "li>{name}"
    arr2(1,0) = "/li>"
    cache = tree.display(0,-1,arr1,arr2,"relative")
    response.write(cache)
    %>

    2.插入,删除等

    select case request.Form("submit")
    case "移动"
    msg =tree.moveNode(request.Form.Item("src"),request.Form.Item("des"))
    case "删除"
    msg =tree.delNode(request.Form("node"),false)
    case "永久删除"
    msg =tree.delNode(request.Form("node"),true)
    case "恢复"
    msg =tree.undel(request.Form("undel"))
    end select

    3.其他的操作请参见实例

    4.API

    整个程序是一个类,提供插入、移动、删除、显示、输出为列表控件等接口,以后功能还会不断完善。


    API
    函数名  功能
    insertNode(int node_pid, str node_name)
    插入一个节点作为给出节点的孩子节点。

    参数:

    • node_pid 树中节点的id,0表示插入到根下
    • str节点的名称默认为新建文件夹;
    MoveNode(src_id,des_id) 移动节点和他的子树,参数:src_id源节点id;des_id:目标节点id(注意暂时不能将一个节点移动到根下(0)) 
    DelNode(id,confirm)  删除节点和子树,参数:id节点id;confirm:是否直接删除true/false。
    undel(id)  恢复没有直接删除的节点
    string OutPutOption(root_id,selected_id,show_root,rel_deep)  

    将树输出为类表控件的选项,即option>标签

    参数:

    • root_id 树根(Root)编号,默认值为0
    • selected_id 列表选项的默认中选项
    • show_root 是否允许显示根(Root)这一行记录
    • rel_deep 显示的相对深度 -1 显示所有 0 :只显示根 1 显示1层
    Display(root_id,rel_deep,menu_tag,item_tag,options)   功能:读出并且按模板标签生成显示内容,替换标签有:{id},{name},{porder},{auto},{pid}
    • 参数:root_id 根的id ,0表示全部显示
    • rel_deep 要显示的相对深度。1层2层等等
    • menu_tag 菜单标签 数组
    • item_tag 项目标签 数组
    • menu_tag 与item_tag 必须为形如arr(1,n)的数组,即必须都是二维数组、第一维必须是1第二维存储各级标签
    • arr(0,n)存储开始标签,arr(1,n)存储结束标签,结束标签不能含有需要替换的内容
    • menu_tag(x,0),item_tag(x,0)用来存储默认的模板标签参见使用实例
    • option:参数 ,可用值:relative
    SubTree(node_id,order,rel_deep,with_root,with_del)   取得子目录记录集
    • node_id 节点id
    • 排序: "asc" "desc"
    • rel_deep 相对要显示的深度 1仅显示1层 -1显示所有深度 0 仅显示根 如此类推
    • with_root(true/false) 记录集是否包含根
    • with_del(true/false) 记录集是否包含标记为删除的记录
    AlterNode(node_id,new_name,step)

    修改节点信息

    • node_id节点id
    • new_name新的名称
    • step 要移动的位置
    程序还在改进中,有些接口还待调整

     

    ©linzsoft.com2006-05-26

    上一篇:关于网站文件自动备份程序的一点思考
    下一篇:抽取10万条数据,想起GetRows()
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    DBTree 1.3.2 DBTree,1.3.2,DBTree,1.3.2,