由于过两天就要做密码学方面的东西了,所以就简单地就近段时间所做的ASP程序(用VB)做一下总结。我没有打算要在这方面成为expert,所以也没有做出什么像样的东西,几个工程都是半途而废,不过近一个月来的工作,我还是有些收获的。马马虎虎写了BBS、网上聊天、日历、留言本、网上考试、网上书店,这些程序都没有完完整整地写完过,很多都不规范,所以只能将一些有用的程序模块拿出来,希望对将来有借鉴意义。
模块一:数据库连接
1、对关系数据库SQLSERVER的连接:
Set conn=server.CreateObject("adodb.connection")
conn.Open "Provider=SQLOLEDB.1;Password=708;Persist Security Info=False;User ID=wang;Initial Catalog=bbs;Data Source='127.0.0.1'"
sql="select * from user_all"
set rs=server.CreateObject("adodb.recordset")
rs.Open sql,conn
2、对非关系数据库如ACSESS的连接:
set conn=server.CreateObject("adodb.connection")
conn.Open "dsn=pubs"
sql="select * from authors"
set rs=conn.execute(sql)
或者下面:
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("data/guestbook.mdb")
exec="select * from guest"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
模块二:数据库文件内容的分页显示
mypage=request.QueryString("whichpage")
if mypage="" then
mypage=1
end if
if mypagesize="" then
mypagesize = 4
end if
set rs=server.CreateObject("adodb.recordset")
conn = "dsn=pubs"
sql="select * from authors"
rs.CursorLocation = 3
rs.Open sql,conn,3,3
rs.MoveFirst
rs.PageSize = mypagesize
maxcount=cint(rs.PageCount)
rs.AbsolutePage = mypage
howmanyfields=rs.fields.count-1
howmanyres=0
response.Write "Page "&mypage&" of "&maxcount&"
........下面用循环显示rs.fields集合中的元素
模块三:框架文件的自适应调整
iframe name="win" frmeboder=1 scrolling=no height="100%" width="100%" marginheight=0 οnlοad="document.getElementById('win').style.height=win.document.body.scrollHeight+'px'"
模块四:登录验证
user=request.Form("user")
psd=request.Form("psd")
isuser=false
rs.MoveFirst
do while not rs.EOF and isuser=false
if strcomp(cstr(rs.Fields("user_id")),user,1)=0 and strcomp(rs.Fields("user_psd"),psd,1)=0 then
isuser=true
session("user_id")=user
exit do
end if
rs.MoveNext
loop
SQL数据类型繁杂,这里做一下总结:
非UNICODE字符串:
Varchar 可变char 固定,而text是很长的可变字符串
UNICODE字符串,只是关键字前加N,最大长度/2
数字型:
Int 对应C语言中的LONG,smallint对应SHORT,tinyint对应unsigned char
DECIMAL、DECIMAL从-10^38+1到10^38–1固定精度和小数位的数字数据
货币:
Money 对应C语言的double(8字节)而smallmoney对应float(4字节)
日期:
Datetime 1753年1.1到9999年12. 31的日期和时间数据,精确到百分之三秒。
Smalldatetime 1900年1.1到2079年6. 6的日期和时间数据,精确到分钟。
下面摘录一些ASP代码编写的注意点:
1、使用VBSCRIPT时,最好要申明Option Explicit,且把它放在代码前面
2、当需要传递参数或将数据保存为字符串时,最好能够使用Server.URLEncode
3、当创建并使用完一个对象后,最好能彻底释放其所占的资源,如set rs=nothing
4、当涉及到服务器文件路径时,最好使用server.mappath()方法
5、不要使用session()、application()变量来存放一个数据库对象,这样会消耗许多资源。
6、不要通过ASP/COM来获取同一个数据多次,而应该第一次就将数据放入一个变量,然后使用变量的值。