ASP课堂上学到的程序设计,都是按照语法和对象来一点一点的学习的,到最后编程的时候,新手根本想不出来要怎么来组合才能完成一个模块,下面把这些语法按照程序员常用的模块方式组合起来,请大家按照模块来记忆,然后按照模块来应用,不一定要一个一个字母的背下来,关键是用到这些模块的时候能准确的,拿出来,安上去!
注意下面的标点符号,全部都为英文中的半角符号,如果写成了全角的就一定运行不起来了,切忌切忌……
1、常用写法
(1)ASP开始结束符语法:<% %> 文件后缀.asp
(2)Request.form("title") '获取表单中的一个输入框name叫title的值
(3)Request.querystring("title") '获取连接中的一个参数title=后面的值
(4)dim str
str="我爱你"
response.write(str) '向屏幕输出
(5) response.write "ok 程序运行到这里了!"
(6) sql="select * from news"
response.write sql
'调试和查看sql语句写法是否正确的语句常用到
(7)Response.Redirect("login.asp") '跳转到另外一个页面
(8)response.redirect("admin.asp") '转到后台
(9)Response.end '程序输出截至,不显示该条语句下面的内容了
(10)Response.Write("<script>alert('???!')</script>")'弹出提示窗口
2、判断语句
(1)判断表单传来的用户名和密码是否正确,并提示
If request("username")="admin" then
Response.write"恭喜,你已经登录成功"
Else
Response.write"对不起,您输入的用户名错误,请返回重输入"
End if
(2)同时判定用户名和密码都正确就转入到后台,否则退回到从新输入页面
If request("name")="admin" and request("pass")="admin" then
Response.redirect"admin.asp"
Else
Response.redirect"login.asp"
End if
(3)变量值和字符串值合起来用&
a="我"
b="爱"
c="你"
response.write a&b&c&"妈妈"
3、循环语句:循环显示6条数据库中的记录
(1)写法1:
do while not rs.eof
response.write "<br><font color=#000000>"&rs("title")&"</font><br>"
rs.movenext
loop
(2)写法二:
for n=1 to 6
response.write rs("title")&"<br>"
if rs.eof then
exit for '跳出for循环
else
rs.movenext '记录集下移一条
end if
next
4、常用变量转换函数
Now() 函数返回系统时间
Date() 函数返回当前系统日期.
CStr(int) 函数转化一个表达式为字符串
CInt(string) 将一个表达式转化为数字类型
Trim(request("username")) 函数去掉字符串左右的空格
Left(rs("title"),10)&"..." 函数返回字符串左边第10个字符以前的字符(含第length个字符),一般在限制新闻标题的显示长度的时候用
Len(string) 函数返回字符串的长度. 中文字符长度也计为一
request.serverVariables("remote_host")'取得来访问的IP
mid(str,起始字符,[读取长度]):截取字符串中间子字符串
right(str,nlen):从右边起截取nlen长度子字符串
Lcase(str):字符串转成小写
Ucase(str):字符串转成大写
Ltrim(str):去除字符串左侧空格
Rtrim(str):去除字符串右侧空格
replace(str,查找字符串,替代字符串,[起始字符,替代次数,比较方法]):
替换字符串
注:默认值:起始字符 1;替代次数 不限;比较方法 区分大小写(0)
InStr([起始字符,]str,查找字符串[,比较方法]):检测是否包含子字符串 可选参数需同时选 返回起始位置
5、Access数据库连接代码
(1)方法一:
db="mydata.mdb" '如果放在目录中,就要写明"database/mydata.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
cServer.MapPath(db)
conn.Open connstr
(2)方法二:
'如果你的服务器采用较老版本Access驱动,请用下面连接方法
db="mydata.mdb" '如果放在目录中,就要写明"database/mydata.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
c & Server.MapPath(db)
conn.Open connstr
6、标准的用Sql语句和asp操作数据的常用写法
包括取全部记录
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="select * from news"
Rs.Open SqlStr,conn,1,1 '运行sql语句,把数据提出到rs对象中
选取几条数据
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="select top 6 * from news"
Rs.Open SqlStr,conn,1,1 '运行sql语句,把6条数据提出到rs对象中
选取一条指定表中id字段数值的数据
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="select * from news where id="&request("id")
Rs.Open SqlStr,conn,1,1 '运行sql语句,把6条数据提出到rs对象中
获取一条表单传过来的数据,然后加入到一个表当中
dim a,b,c,d
a=request.form("a")
b=request("b")
c=request("c")
d=request("d")
sqlstr100000="insert into huiyuanbiao(yonghuming,mima,wenti,daan) values('"&a&"','"&b&"','"&c&"','"&d&"')"
conn.execute sqlstr100000
response.write"恭喜,新数据加入成功!"
修改一条指定表中id字段数值的数据,用表单传过来的数据替换
dim a,d,e
a=request("id")
d=request.form("d")
e=request.form("e")
sqlstr="update huiyuanbiao set yonghuming='"&d&"',mima='"&e&"' where id="&a
response.write sqlstr
conn.execute sqlstr
response.write"恭喜,数据修改成功!"
删除一条指定表中id字段数值的数据
dim a
a=request("delid")
sqlstr="delete from huiyuanbiao where id="&a
conn.execute sqlstr
response.write"恭喜,删除成功!"
7、用Recordset对象和asp操作数据库的常用写法
(1)用sql语句,取出news表中所有的数据放到rs中,按照数据库默认排序
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="select * from news"
Rs.Open SqlStr,conn,1,1
(2)取出news表中前6条数据放到rs中,按照数据库默认排序方式
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="select top 6 * from news"
Rs.Open SqlStr,conn,1,1
(3)循环显示6条rs对象中存在的数据,列表显示
不带连接的写法
for n=1 to 6
response.write rs("title")&"<br>"
if rs.eof then
exit for
else
rs.movenext
end if
next
带连接的写法
for n=1 to 6
response.write "<a href=show.asp?id=rs("id")>"& left(rs("title"),20)&"</a><br>"
if rs.eof then
exit for
else
rs.movenext
end if
next
(4)向数据库添加一条数据代码
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="select * from news"
Rs.Open SqlStr,conn,1,3'注意这里的1,3代表可以写入的打开数据表
Rs.addnew
Rs("title")=trim(request.form("title"))
Rs("neirong")=request.form("neirong")
Rs("date")=now()
rs.update '真正写入数据库
(5)修改一条记录的代码,通过(2)中的连接传递过来了id数值
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="select * from news where id="&request("id")
Rs.Open SqlStr,conn,1,3 '注意这里的1,3代表可以写入的打开数据表
Rs("title")=trim(request("title"))
Rs("neirong")=request("neirong")
Rs("date")=now()
rs.update '真正写入数据库
(6)删除数据库中一条记录,通过连接传递过来了数据得id数值
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="select * from news where id="&request("id")
Rs.Open SqlStr,conn,1,3 '注意这里的1,3代表可以写入的打开数据表
rs.delete '删除该条数据
8、当点击按钮时候表单带着的数据传送到哪个文件,在哪里指定?
<form method="post" action="addsave.asp">
<input type="text" name="a">
<input type="text" name="b">
<input type="submit" name="Submit" value="提交">
</form>
9、表单提交来的数据接收并显示到屏幕上的代码
response.write request.form("a")
response.write now()
response.write trim(request.form("b"))
10、利用Application对象作计数器的语法
在网页的头部加入
Application.Lock
Application("counter") = Application("counter") + 1
Application.UnLock
在需要显示计数内容的网页的地方,加入下面的语句
response.write Application("counter")
11、利用Session对象保护后台管理页面admin.asp,防止未登陆用户进入
第一步、在网站后台网页需要权限保护的所有网页的头部加入下面的代码,
if session("admin")<>"ok" then
response.redirect"login.asp"
response.end
end if
第二步、在网站后台登陆页的检测表单发来的用户名和密码验证部分标准写法
AdmName=Request.Form("Name")
AdmPass=Request.Form("Pass")
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="Select * from Admin where name='"&AdmName&"' and pass='"&AdmPass&"'"
Rs.Open SqlStr,conn,1,3
if Rs.EOF AND RS.BOF then
Response.Redirect("login.asp")
response.end
else
session("admin")="ok"
Response.Redirect("admin.asp")
response.end
end if
12、分页代码
sql = "select……………………省略了你的从表中取出所有数据的sql语句写法
Set rs=Server.Createobject("ADODB.RECORDSET")
rs.Open sql, conn, 1, 1
if not rs.eof then
pages = 30 '定义每页显示的记录数
rs.pageSize = pages '定义每页显示的记录数
allPages = rs.pageCount '计算一共能分多少页
page = Request.QueryString("page")'通过浏览器传递的页数
'if语句属于基本的排错处理
if isEmpty(page) or Cint(page) < 1 then
page = 1
elseif Cint(page) > allPages then
page = allPages
end if
rs.AbsolutePage = page
Do while not rs.eof and pages > 0
'这里输出你要的内容………………
pages = pages - 1
rs.MoveNext
Loop
else
Response.Write("数据库暂无内容!")
End if
rs.Close
Set rs = Nothing
'分页页码连接和跳转页码程序
<form Action="" Method="GET">
<%
If Page <> 1 Then
Response.Write "<A HREF=?Page=1>第一页</A>”
Response.Write "<A HREF=?Page=" & (Page-1) & ">上一页</A>“
End If
If Page <> allPages Then
Response.Write "<A HREF=?Page=" & (Page+1) & ">下一页</A>"
Response.Write "<A HREF=?Page=" & allPages & ">最后一页</A>"
End If
%>
输入页数:<input TYPE="TEXT" Name="Page" SIZE="3"> 页数:<font COLOR="Red"><%=Page%>/<%=allPages %></font>
</form>
13、分行列显示图片和产品名称的代码(4列x3行=12个)
<%
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="select top 12 * from myproduct"
Rs.Open SqlStr,conn,1,1
i=1
%>
<table width="90%" border="1" cellspacing="0" sellpadding="0">
<tr>
<%
do while not rs.eof
%>
<td align="center">
<img src="<%=rs("imgurl")%>" width="52" height="120"><br>
<%=rs("productname")%>
</td>
<% if i mod 4=0 then response.write"</tr><tr>"
i=i+1
rs.movenext
loop
rs.close
%>
</tr>
</table>
十四、ASP数据库连接之ACCESS-SQLSERVER
<%
IsSqlData=0 ‘定义数据库类别,0为Access数据库,1为SQL数据库
If IsSqlData=0 Then
Access数据库
datapath ="data/" 数据库目录的相对路径
datafile ="data.mdb" 数据库的文件名
c&Server.MapPath(""&datapath&""&datafile&"")
C&server.mappath(""&datapath&""&datafile&"")&";DRIVER={Microsoft Access Driver (*.mdb)};"
Else
SQL数据库
SqlLocalName ="(local)" 连接IP [ 本地用 (local) 外地用IP ]
SqlUsername ="sa" 用户名
SqlPassword ="1" 用户密码
SqlDatabaseName="data" 数据库名
C & SqlUsername & "; Password=" & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source=" & SqlLocalName & ";"
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
%>
<!-- 判断网址是否合格并处理 -->
<%
url=trim(request.form("url"))
if left(url,7)<>"http://" then
url="http://"&url
end if
%>
<!-- 显示时间为几月几日并处理 -->
<%
y=Month(date())
r=Day(date())
if len(y)=1 then y="0" & y
if len(r)=1 then r="0" & r
Response.Write y & "月" & r & "日"
%>
<!-- 限制某些IP访问网站 -->
<%
url_str=Request.ServerVariables("REMOTE_ADDR")
url=split(url_str,".")
if url(0)=127 and url(1)=0 and url(2)=0 and url(3)>0 and url(3)<256 then
else
response.Write(url_str)
end if
%>
<!-- 设置文章显示格式 -->
<%
function HTMLEncode(fString)
if not isnull(fString) then
fString = replace(fString, ">", ">")
fString = replace(fString, "<", "<")
fString = Replace(fString, CHR(32), " ")
fString = Replace(fString, CHR(9), " ")
fString = Replace(fString, CHR(34), """)
fString = Replace(fString, CHR(39), "'")
fString = Replace(fString, CHR(13), "")
fString = Replace(fString, CHR(10) & CHR(10), "</P><P> ")
fString = Replace(fString, CHR(10), "<BR> ")
HTMLEncode = fString
end if
end function
%>
1. ASP与Access数据库连接:
<%
dim conn,mdbfile
mdbfile=server.mappath("数据库名称.mdb")
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver
(*.mdb)};uid=admin;pwd=数据库密码;dbq="&mdbfile
%>
2. ASP与SQL数据库连接:
<%
dim conn
set conn=server.createobject("ADODB.connection")
con.open "PROVIDER=SQLOLEDB;DATA
SOURCE=SQL服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称
%>
建立记录集对象:
set rs=server.createobject("adodb.recordset")
rs.open SQL语句,conn,3,2
3. SQL常用命令使用方法:
(1) 数据记录筛选:
sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"
sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"
sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"
sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"
sql="select * from 数据表 where 字段名 between 值1 and 值2"
(2) 更新数据记录:
sql="update 数据表 set 字段名=字段值 where 条件表达式"
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"
(3) 删除数据记录:
sql="delete from 数据表 where 条件表达式"
sql="delete from 数据表" (将数据表所有记录删除)
(4) 添加数据记录:
sql="insert into 数据表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"
sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)
(5) 数据记录统计函数:
AVG(字段名) 得出一个表格栏平均值
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加
引用以上函数的方法:
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=conn.excute(sql)
用 rs("别名") 获取统的计值,其它函数运用同上。
(6) 数据表的建立和删除:
Create TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/okfei/archive/2009/08/14/4446718.aspx