ASP教程之bbs树形布局的完成办法(一)
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。bbs的树形布局显现能够有良多种办法,个中对照简单想到的是递回和排序串办法,但这两种办法并非很好,那末如何才算是对照公道的算法呢?递回办法不必讲,人人都晓得怎样用,先讲讲排序串办法,最复杂的排序串办法能够如许用,只用一个id就能够完成树型,向如许
1001
2002
3001001
4001001001
5001002001
用这个字符串排序后就酿成如许:
001
001001
001001001
001002001
002
这类办法简单完成,但弱点也是很分明,一个是回帖数受限定,另外一个跟着回帖增添会愈来愈长,影响数据库效力。
上面一种办法是李龙的,属于变通的排序串办法
DDL
--------------
CREATETABLEdbo.Message
(
IDnumeric(18,0)IDENTITY(1000,1),
DateAndTimedatetimeDEFAULTgetdate()NOTNULL,
AuthorIDnumeric(18,0)NOTNULL,
Subjectnvarchar(250)NOTNULL,
BodyntextNULL,
LinkURLnvarchar(100)NULL,
TextForLinknvarchar(50)NULL,
ImageURLnvarchar(100)NULL,
ClassintDEFAULT0NOTNULL,
ClientInfonvarchar(250)NULL,
RemoteAddrnvarchar(50)NULL,
CONSTRAINTPK_BBSMessage
PRIMARYKEYNONCLUSTERED(ID,AuthorID)
)
go
CREATETABLEdbo.MsgRefTab
(
MsgIDnumeric(18,0)NOTNULL,
ParentIDnumeric(18,0)NOTNULL,
AncestorIDnumeric(18,0)NOTNULL,
ChildNumnumeric(18,0)DEFAULT0NOTNULL,
LinkStrnvarchar(250)NOTNULL,
CONSTRAINTPK_BBSRefTab
PRIMARYKEYNONCLUSTERED(MsgID)
)
go
-----------------
存储历程:
-----------------
--抽出
CREATEPROCEDUREsp_Summary
@HaveBodybit,
@fromnumeric,
@tonumeric
AS
IF(@HaveBody=1)
selectt.ID,t.DateAndTime,m.Nicknameas
Author,m.Email,t.Subject,t.Body,t.LinkURL,t.TextForLink,t.ImageURL,s.ChildNu
m,s.ParentID
fromMessaget
,MsgRefTabASs
,(SELECTMsgIDFROMMsgRefTabWHEREParentID=0)ASf
,MembersASm
wheret.ID=s.MsgID
andf.MsgID=s.AncestorID
andf.MsgIDbetween@fromand@to
andm.MemberID=t.AuthorID
orderbys.AncestorID,s.LinkStr
ELSE
selectt.ID,t.DateAndTime,m.Nicknameas
Author,m.Email,t.Subject,t.LinkURL,t.TextForLink,t.ImageURL,s.ChildNum,s.Par
entID
fromMessaget
,MsgRefTabASs
,(SELECTMsgIDFROMMsgRefTabWHEREParentID=0)ASf
,MembersASm
wheret.ID=s.MsgID
andf.MsgID=s.AncestorID
andf.MsgIDbetween@fromand@to
andm.MemberID=t.AuthorID
orderbys.AncestorID,s.LinkStr
go
--加贴
CREATEPROCEDUREsp_Add_Message
@AuthorIDnumeric,
@Subjectnvarchar(250),
@Bodyntext,
@LinkURLnvarchar(100),
@TextForLinknvarchar(50),
@ImageURLnvarchar(100),
@ParentIDnumeric,
@IDnumericOUTPUT,
@ChildNumnumericOUTPUT,
@LinkStrnvarchar(250)OUTPUT,
@AncestorIDnumericOUTPUT
AS
INSERTINTOMessage(
AuthorID,
Subject,
Body,
LinkURL,
TextForLink,
ImageURL)
VALUES(
@AuthorID,
@Subject,
@Body,
@LinkURL,
@TextForLink,
@ImageURL)
SELECT@ID=@@IDENTITY
UPDATEMsgRefTab
SET
ChildNum=ChildNum+1
WHERE
MsgID=@ParentID
SELECT@ChildNum=ChildNum,
@LinkStr=LinkStr,
@AncestorID=</p>强大的可扩展性。ASP具有强大的扩展性,可以实现与多种网络、硬件设备的连接:通过专用的通讯线路远程接入企业;通过远程拨号服务器为远程拨号客户提供服务;通过WAP为移动电话互联网客户服务。 另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件) 接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。 下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。 最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。 ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。 多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。 我想问如何掌握学习节奏(先学什么再学什么)最好详细点? 掌握asp的特性而且一定要知道为什么。 兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的 下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
页:
[1]