看过网上很多asp无限分类的代码,认为在递归代码中重复获取记录集,这样太耗资源了。
下面的方法是一次获取所有的无限分类记录,然后通过函数转换成json格式,这种方法不用重复执行rs获取记录集。
表结构
ID 主键ID
navName 导航名称
pID 父ID,0为顶级栏目
sortID 排序ID
'递归函数,把数据库表的数据转换成json数据,arrData-数组,parentID-父ID
sub dataToJson(byref arrData,byval parentID)
dim m, n
n = 0
m = 0
echo "["
Do While m<=ubound(arrData,2)
if arrData(2,m)=parentID then
if n <> 0 then echo ","
n = n + 1
echo "{"
echo """ID"":" & arrData(0,m)&","
echo """navName"":""" & arrData(1,m)&""","
echo """pID"":" & arrData(2,m)&","
echo """sortID"":" & arrData(3,m)&","
echo """childList"": "
call dataToJson(arrData,arrData(0,m))
echo "}"
end if
m=m+1
loop
echo "]"
end sub
'dim conn,arrData,temp,i,j,string
'set conn = new dataConn
'arrData = conn.getRowsByPa(1,"select id,navName,pID,sortID from Lim_nav where langID=? order by pID asc,sortID asc,addTime desc",array(array("langID",20,1,32,14)))
'if not isNull(arrData) then
'call dataToJson(arrData,0)
'else
' echo "no data"
'end if
'set conn = nothing
说明:dataconn为数据库连接类,已经封装,getRowsByPa为类的方法。具体的实现方法可通过rs.getRows,这个方法是返回的是数组格式的记录。
本文介绍了一种提高效率的方法,通过一次性获取数据库中的所有无限分类记录,然后利用递归函数将其转换为JSON格式,避免了在递归过程中反复查询记录集,节省了资源。
837

被折叠的 条评论
为什么被折叠?



