数据库Access,字段:ClassID(主键),ParentClassID,ClassName,3个字段都是文本型。
<
!DOCTYPE html
PUBLIC
"
-//W3C//DTD XHTML 1.0 Transitional//EN
"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
"
>
<
html xmlns
=
"
http://www.w3.org/1999/xhtml
"
>
<
head
>
<
title
>
ASP无限分类数据库版
</
title
>
<
meta http
-
equiv
=
"
Content-Type
"
content
=
"
text/html; charset=gb2312
"
/>
<
meta name
=
"
Generator
"
content
=
"
EditPlus
"
>
<
meta name
=
"
Author
"
content
=
"
Dicky;QQ:25941
"
>
<
meta name
=
"
Keywords
"
content
=
"
Dicky;QQ:25941;ASP无限分类数据库版
"
>
<
meta name
=
"
Description
"
content
=
"
Dicky;QQ:25941;ASP无限分类数据库版
"
>
</
head
>

<
body
>
<
%
Const
IsSql
=
0
'
定义数据库类型,1为SQL Server,0为Access
Function
OpenConn(Conn)
'
打开数据库连接
Dim
ConnStr
If
IsSql
=
1
Then
'
如果是SQL Server数据库
'
SQL Server数据库连接参数:用户名、用户密码、数据库名、连接名(本地用local,外地用IP)
Dim
SqlUsername,SqlPassword,SqlDatabaseName,SqlLocalName
SqlUsername
=
"
sa
"
SqlPassword
=
""
SqlDatabaseName
=
"
TreeDb
"
SqlLocalName
=
"
(local)
"
ConnStr
=
"
Provider = Sqloledb; User ID =
"
&
SqlUsername
&
"
; Password =
"
&
SqlPassword
&
"
; Initial Catalog =
"
&
SqlDatabaseName
&
"
; Data Source =
"
&
SqlLocalName
&
"
;
"
Else
'
如果是Access数据库
Dim
Db
'
第一次使用请修改本处数据库地址并相应修改数据库名称,如将Dicky.mdb修改为Dicky.asp(防止恶意下载Access数据库)
Db
=
"
TreeDB.mdb
"
ConnStr
=
"
Provider = Microsoft.Jet.OLEDB.4.0;Data Source =
"
&
Server.MapPath(Db)
End
If
On
Error
Resume
Next
Set
Conn
=
Server.CreateObject(
"
ADODB.Connection
"
)
Conn.Open ConnStr
If
Err
Then
'
Err.Clear
Set
Conn
=
Nothing
Response.Write
"
数据库连接出错,请检查连接字串。
"
Response.End
End
If
End Function

Function
CloseConn(Conn)
'
关闭数据库连接
If
IsObject
(Conn)
Then
Conn.Close
Set
Conn
=
Nothing
End
If
End Function

Function
Echo(Str)
'
输出字符串并换行
Response.Write Str
&
VbCrlf
End Function

Call
OpenConn(Conn)

'
定义第一级分类
Sub
MainFl()
Dim
Rs
Set
Rs
=
Conn.Execute(
"
SELECT ClassID,ClassName FROM Class WHERE ParentClassID IS NULL
"
)
If
Not
Rs.Eof
Then
Do
While
Not
Rs.Eof
Echo(
"
<div><label id=""
"
&
Trim
(Rs(
"
ClassID
"
))
&
"
"">+
"
&
Trim
(Rs(
"
ClassName
"
))
&
"
</label>
"
)
Call
Subfl(Rs(
"
ClassID
"
),
"
|-
"
)
'
循环子级分类
Echo(
"
</div>
"
)
Rs.MoveNext
If
Rs.Eof
Then
Exit
Do
'
防上造成死循环
Loop
End
If
Set
Rs
=
Nothing
End Sub
'
定义子级分类
Sub
SubFl(FID,StrDis)
Dim
Rs1
Set
Rs1
=
Conn.Execute(
"
SELECT ClassID,ClassName FROM Class WHERE ParentClassID = '
"
&
FID
&
"
'
"
)
If
Not
Rs1.Eof
Then
Do
While
Not
Rs1.Eof
Echo(
"
<div id=""
"
&
Trim
(Rs1(
"
ClassID
"
))
&
"
"">
"
&
StrDis
&
Trim
(Rs1(
"
ClassName
"
))
&
"
</div>
"
)
Call
SubFl(
Trim
(Rs1(
"
ClassID
"
)),
"
|
"
&
Strdis)
'
递归子级分类
Rs1.Movenext:
Loop
If
Rs1.Eof
Then
Rs1.Close
Exit
Sub
End
If
End
If
Set
Rs1
=
Nothing
End Sub

'
最后直接调用MainFl()就行了
MainFl()

Call
CloseConn(Conn)%
>
</
body
>
</
html
>




























































































