lojofo 发表于 2008-2-26 22:38:54

学好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)判断表单传来的用户名和密码是否正确,并提示
Ifrequest("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.writers("title")&"<br>"
    ifrs.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.writers("title")&"<br>"
       ifrs.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>"
      ifrs.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、当点击按钮时候表单带着的数据传送到哪个文件,在哪里指定?

<formmethod="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>
<%
dowhile 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
%>
页: [1]
查看完整版本: 学好ASP编程必会的代码