教你1小时里搞定ASP

2021 年 11 月 30 日260

收集:TTXS(Fcbu.Com)  

来源:互联网  

时间:2006-06-25 

这篇文章教你在一个小时里如何搞定ASP,非常实用,对于想学ASP的同学可能有所帮助!!

一、语法

<1>语句

<%...........%>

<2>定义变量dim语句

<%

dim a,b

a=10

b=”ok!”

%>

注意:定义的变量可以是数值型,也可以是字符或者其他类型的

<3>简单的控制流程语句

1. If 条件1 then

语句1

elseif 条件2 then

语句2

else

语句3

end if

2.while 条件

语句

wend

3.for count=1 to n step m

语句1

exit for

语句2

next

二.ASP数据库简单*作教程

<1>.数据库连接(用来单独编制连接文件conn.asp)

<%

Set conn = Server.CreateObject("ADODB.Connection")

conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\bbs\db1\user.mdb")

%>

(用来连接bbs\db1\目录下的user.mdb数据库)

<2>显示数据库记录

原理:将数据库中的记录一一显示到客户端浏览器,依次读出数据库中的每一条记录

如果是从头到尾:用循环并判断指针是否到末 使用: not rs.eof

如果是从尾到头:用循环并判断指针是否到开始 使用:not rs.bof

<!--#include file=conn.asp--> (包含conn.asp用来打开bbs\db1\目录下的user.mdb数据库)

<%

set rs=server.CreateObject("adodb.recordset") (建立recordset对象)

sqlstr="select * from message" ---->(message为数据库中的一个数据表,即你要显示的数据所存放的数据表)

rs.open sqlstr,conn,1,3 ---->(表示打开数据库的方式)

rs.movefirst ---->(将指针移到第一条记录)

while not rs.eof ---->(判断指针是否到末尾)

response.write(rs("name")) ---->(显示数据表message中的name字段)

rs.movenext ---->(将指针移动到下一条记录)

wend ---->(循环结束)

rs.close

conn.close 这几句是用来关闭数据库

set rs=nothing

set conn=nothing

%>

其中response对象是<a href=';http://http://www.zjjv.com//.cn/eschool/includes/zhuanti/shuyu/info/1/02/1684.shtml'; target=';_blank';;>服务器</a>向客户端浏览器发送的信息

<3>增加数据库记录

增加数据库记录用到rs.addnew,rs.update两个函数

<!--#include file=conn.asp--> (包含conn.asp用来打开bbs\db1\目录下的user.mdb数据库)

<%

set rs=server.CreateObject("adodb.recordset") (建立recordset对象)

sqlstr="select * from message" ---->(message为数据库中的一个数据表,即你要显示的数据所存放的数据表)

rs.open sqlstr,conn,1,3 ---->(表示打开数据库的方式)

rs.addnew 新增加一条记录

rs("name")="xx" 将xx的值传给name字段

rs.update 刷新数据库

rs.close

conn.close 这几句是用来关闭数据库

set rs=nothing

set conn=nothing

%>

<4>删除一条记录

删除数据库记录主要用到rs.delete,rs.update

<!--#include file=conn.asp--> (包含conn.asp用来打开bbs\db1\目录下的user.mdb数据库)

<%

dim name

name="xx"

set rs=server.CreateObject("adodb.recordset") (建立recordset对象)

sqlstr="select * from message" ---->(message为数据库中的一个数据表,即你要显示的数据所存放的数据表)

rs.open sqlstr,conn,1,3 ---->(表示打开数据库的方式)

while not rs.eof

if rs.("name")=name then

rs.delete

rs.update 查询数据表中的name字段的值是否等于变量name的值"xx",如果符合就执行删除,

else 否则继续查询,直到指针到末尾为止

rs.movenext

emd if

wend

rs.close

conn.close 这几句是用来关闭数据库

set rs=nothing

set conn=nothing

%>

<5>关于数据库的查询

(a) 查询字段为字符型

<%

dim user,pass,qq,mail,message

user=request.Form("user")

pass=request.Form("pass")

qq=request.Form("qq")

mail=request.Form("mail")

message=request.Form("message")

if trim(user)&"x"="x" or trim(pass)&"x"="x" then (检测user值和pass值是否为空,可以检测到空格)

response.write("注册信息不能为空")

else

set rs=server.CreateObject("adodb.recordset")

sqlstr="select * from user where user=';"&user&"';" (查询user数据表中的user字段其中user字段为字符型)

rs.open sqlstr,conn,1,3

if rs.eof then

rs.addnew

rs("user")=user

rs("pass")=pass

rs("qq")=qq

rs("mail")=mail

rs("message")=message

rs.update

rs.close

conn.close

set rs=nothing

set conn=nothing

response.write("注册成功")

end if

rs.close

conn.close

set rs=nothing

set conn=nothing

response.write("注册重名")

%>

(b)查询字段为数字型

<%

dim num

num=request.Form("num")

set rs=server.CreateObject("adodb.recordset")

sqlstr="select * from message where id="&num (查询message数据表中id字段的值是否与num相等,其中id为数字型)

rs.open sqlstr,conn,1,3

if not rs.eof then

rs.delete

rs.update

rs.close

conn.close

set rs=nothing

set conn=nothing

response.write("删除成功")

end if

rs.close

conn.close

set rs=nothing

set conn=nothing

response.write("删除失败")

%>

<6>几个简单的asp对象的讲解

response对象:服务器端向客户端发送的信息对象,包括直接发送信息给浏览器,重新定向URL,或设置cookie值

request对象:客户端向服务器提出的请求

session对象:作为一个全局变量,在整个站点都生效

server对象:提供对服务器上方法和属性的访问

(a) response对象的一般使用方法

比如:

<%

resposne.write("hello, welcome to asp!")

%>

在客户端浏览器就会看到 hello, welcome to asp! 这一段文字

<%

response.Redirect("http://www.zjjv.com/")

%>

如果执行这一段,则浏览器就会自动连接到 “搜狐” 的网址

关于response对象的用法还有很多,大家可以研究研究

request对象的一般使用方法

比如客户端向服务器提出的请求就是通过request对象来传递的列如 :你在申请邮箱的所填写的个人信息就是通过该对象来将你所填写的信息传递给服务器的

比如:这是一段表单的代码,这是提供给客户填写信息的,填写完了按“提交”传递给request.asp文件处理后再存入服务器数据库

<form name="form1" method="post" action="request.asp">

<p>

<input type="text" name="user">

</p>

<p>

<input type="text" name="pass">

</p>

<p>

<input type="submit" name="Submit" value="提交">

</p>

</form>

那么request.asp该如何将其中的信息读入,在写入数据库,在这里就要用到

request对象了,下面我们就来分析request.asp的写法

<%

dim name,password (定义user和password两个变量)

name=request.form(“user”) (将表单中的user信息传给变量name)

password=request.form(“pass”) (将表单中的pass信息传给变量password)

%>

通过以上的几句代码我们就将表单中的数据读进来了,接下来我们要做的就是将

信息写入数据库了,写入数据库的方法上面都介绍了,这里就不一一复述了。

:em06:

ASP初学者常犯的几个错误

1.记录集关闭之前再次打开:

------------------------------------

sql="select * from test"

rs.open sql,conn,1,1

if not rs.eof then

dim myName

myName=rs("name")

end if

sql="select * from myBook"

rs.open sql,conn,1,1

-------------------------------------

解决:在第二次rs.open之前先关闭 rs.close

set rs1=server.createobject

rs1.open sql,conn,1,1

2,用SQL关键字做表名或字段名

-------------------------------------

sql="select * from user"

rs.open sql,conn,1,1

-------------------------------------

user为sql关键字

解决:改为

sql="select * from [user>"

3,用锁定方式去进行update

-------------------------------------

sql="select * from [user>"

rs.open sql,conn,1,1

rs.addnew

rs("userName")="aa"

rs.update

-------------------------------------

当前记录集的打开方式为只读

解决:

改为

rs.open sql,conn,1,3

4,在查询语句中采用的对比字段值与字段类型不符

-----------------------------------------

sql="select * from [user> where;"

rs.open sql,conn,1,1

-----------------------------------------

假设表中设计ID为数字型,那么些时出错。

解决:

sql="select * from [user> where id=" & myID

5,未检查变量值而出错

-----------------------------------------

sql="select * from [user> where id=" & myID

rs.open sql,conn,1,1

-----------------------------------------

假设myID变量此时值为null,那么sql将成为

sql="select * from [user> where id="

解决:

在前面加上

if isnull(myID) then 出错提示

6,未检查变量值类型而出错

-----------------------------------------

sql="select * from [user> where id=" & myID

rs.open sql,conn,1,1

-----------------------------------------

假设id为数字型,myID变量此时值不为null,但为字符,比如myID此时为"aa"

那么sql将成为

sql="select * from [user> where id=aa"

解决:

在前面加上

if isnumeric(myID)=false then 出错提示

这也可以有效防止 sql injection 漏洞攻击。

7,由于数据库文件所在目录的NTFS权限而引起的';不能更新。数据库或对象为只读"错误。

说明:

WIN2K系统延续了WINNT系统的NTFS权限。

对于系统中的文夹都有默认的安全设置。

而通过HTTP对WWW访问时的系统默认用户是 iusr_计算机名 用户 ,它属于guest组。

当通过HTTP访问时,可以ASP或JSP,也或是PHP或.NET程序对数据进行修改操作:

比如:

当打开某一个文章时,程序设定,文章的阅读次数=原阅读次数 1

执行

conn.execute("update arts set clicks=clicks 1 where id=n")

语句时,如果 iusr_计算机名 用户没有对数据库的写权限时,就会出错.

解决方法:

找到数据库所在目录

右键》属性》安全选项卡》设置 iusr_计算机名 用户的写权限(当然,也可以是everyone)

很不错的文章

楼主是何方高人?

居然敢把两大坛主合二为一?

呵呵,不错,好帖子~!

UP!

好贴

记下了。

确实不错

别仅仅说不错 学习中。。。。

0 0