当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP教程:6大对象和数据库操作简单学

ASP
ASP正则表达式技巧
ASP Access实现网站计数器(访问量)
ASP新闻分页,将一篇过长的文章分页,生成静态页面
一些关于asp 购物车的想法
一个sql查询器,自动画表格填字段
ASP实现文件直接下载的代码
把网页中的(电话,qq等数字)生成图片的ASP程序
asp长文章用分页符来分页显示
Asp函数介紹(37个常用函数)
ASP中的面向对象类
分页实现方法的性能比较
asp ajax跨域提交数据
asp修改文件和文件夹的名字的代码
ASP 多关键词查询实例代码
asp被杀毒软件误删的解决方法
asp 多关键词搜索的简单实现方法
asp 根据IP地址自动判断转向分站的代码
asp dictionary对象的用法
ASP 千万级数据分页的存储过程
ASP隐藏真实文件的下载功能实现代码

ASP教程:6大对象和数据库操作简单学


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 51 ::
收藏到网摘: n/a

ASP学习步骤:
1、5个对象 Request、Response、Session、Server、Applictaion 
2、两个数据库组件 Adodb.Recordset Adodb.Connection
3、Request.From("表单名称") 得到From表单数据
4、Request.QueryString("Url参数") 得到Url参数
5、index.asp?act=save 
6、Request.QueryString("act")

一、request
Request.Cookies("Cookie") 得到Cookies  Cookies  一般用于存储用户信息 用于验证 一般用于用户验证之类的 Session也有同样的类型 区别是Session是存在服务器上 Cookies是存在用户硬盘上 一般可以省略点方法 直接用Request("参数名") 他会依次用From QueryString Cookies去取值  Request 差不多就这些了

二、Response
Response.Write 向浏览器输出
Response.Redirect 重转向
Response.End 停止向浏览器输出
Response.Cookies 向客户端写Cookies
Response.Cookies("CookieName") = "test"
Responsp.Cookies("CookieName").Domain="china228.com" 这样写的话 在所有的China228.com的域名下用Request.Cookies("CookieName")都能得到

三、Session
Session("SessionName") = "" 把信息存储到Session里面
If Session("SessionName") <> "" Then 判断Session是否存在 一般用于验证 Session("SessionName") = "" 清空Session
Session.Abandon 清空所有Session
Session.TimeOut = 100 设置Session过期时间 单位为秒
Session是存在服务器上 Cookies是存在用户硬盘上 Session重启了进程池就没有了 Cookies我们就不能控制了 除非写个程序 强制清空

四、Server 
Server.Mappath 把虚拟路径转为实际路径,如果你的程序在C盘 那么你用path = Server.Mappath("/")  那么和path = "c:\" 是一样的 基于根目录
Server.CreateObject 这个注册组件的  比较常用 Server.CreateObject("Adodb.RecordSet") 注册一个数据库组件

五 Applictaion  是一个全局对象 他和Session是一样的 区别在于 Session是存储单个的用户信息 Application是存储全局信息
Application("Site") = "Http://www.ruanchen.com" 只要在该站点下的所有文件都可以调用这个Application  二级域名不可以调用这个Application,而要用Cookies 设置他的可用域名
=======================================================
六、Adodb.Connection 连接数据库 先注册一个Conn对象 Set Conn = Server.CreateObject("Adodb.Connection")  //用Server对象的CreateObject方法  然后再用Connection的open方法连接数据库 Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.Mappath("Date.mdb")       Server.Mappath("Date.mdb")即当前目录下面的Date.Mdb  一般我们把这个放在Conn.asp里面
<%
Dim Conn,ConnStr
Set Conn = Server.CreateObject("Adodb.Connection")
ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.Mappath("Date.mdb")
Conn.Open ConnStr
%>
Dim是定义一个变量,asp是弱类型语言 不用定义也可以的,不像C# Java之类的要先定义才能使用
Execute 方法   Conn.Execute(Sql) 执行一条SQL语句  Conn.Execute("Insert Into Tablename(1,2,)Values(1,2)")
Conn.Close 关闭对象  insert 插入一条数据 update修改数据 delete删除 select 查询


七、Adodb.Recordset 返回一个记录集 先也是注册对象 Set Rs = Server.CreateObject("Adodb.Recordset") 这个rs是可以自己定义的 不一定一定要用rs 或者conn    因为这些是Com组件(也就是用deiphl C++写的dll,一些asp本身不能实现的功能 ) 不是asp的内置对象 ,所以要注册对象   

然后也是用Open方法打开记录集 Rs.Open "Select * From TableName",Conn,1,3   Rs.Open Sql语句,Conn对象,1,3 (1,3参数一会讲)Sql语句 一般是一条查询语句  Conn对象就是刚才上面Connection打开的数据库对象

1 打开数据库的游标类型 
3 这个参数这里 如果改为1的话 就不能对库进行操作,不能更新和删除(不能使用Rs.Addnew,Rs.Update,Rs.Delete)  改为2 以独占的形式打开(当有一个用户在修改库的时候,就会锁定库,保持数据的一致性)
3 可以对库进去任何操作,包括删除 修改 更新 添加
这里一般我会用两种 在列表页的时候 因为不用操作库,只读查询就行了 Rs.Open Sql,Conn,1,1   在添加修改数据的时候 用Rs.Open Sql,Conn,1,3   Rs.Bof  是否为第一条数据 是 返回 True 反之 返回False  Rs.Fof 是否为最后  一条数据 是 返回 True 反之 返回False 那就可以用这个来判断数据库里有没有记录  if rs.eof and rs.bof then 就是说当前游标 不在第一条也不在最后一条 就说明没有记录  if rs.eof then 这样说明有记录 那么我们就用个循环把数据输出  Rs和Conn一样理解,是变量

Set Rs = Server.CreateObject("Adodb.Recordset")
Rs.Open Sql,Conn,1,1
If Not Rs.Eof Then 如果不在记录集的未端,说明有记录
    Do While Not Rs.Eof  直到该记录集的最后 跳出循环
        Response.Write Rs("字段名")
    Rs.MoveNext 游标向下移动
    Loop
End If
Rs.Close //注销对象
Set Rs = Nothing //释放资源

因为asp是弱类型的 定量对象时不用定义类型
如果是C# 就是
int i;  string str; asp 就 dim i,str 还有asp定义变量不能赋初始值

C#  int i = 1;
asp   dim i  i = 1

下面讲一下指针移动(就上面的游标,应该是指针,游标是C语言里面的,asp没有)
Rs.MoveNext 向下移动一条
Rs.MovePrevious 向上移动一条
Rs.Movefirst 移动到第一条
Rs.MoveLast 移动到最后一条
Rs.Absoluteposition = n 移动记录指针到第n行
常用的就Rs.MoveNext

讲asp分页的几个方法属性
Rs.Pagesize = n 每页显示N条数据
Rs.absolutepage = n 将记录指针移动第N页的第一条数据
Rs.RecordCount 记录集的总记录数
Rs.PageCount 记录集的总页数

<%
Dim Conn,ConnStr
Set Conn = Server.CreateObject("Adodb.Connection")
ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.Mappath("Date.mdb")
Conn.Open ConnStr

Set Rs = Server.CreateObject("Adodb.Recordset")
Rs.Open Sql,Conn,1,1
PageSize = 20
Rs.PageSize = PageSize '每页显示20条
curpage = Request.QueryString("Page") '得到当前页数
If curpage = "" Or IsNumeric(curpage) Or (curpage-Rs.pagecount) > 0 Then
    '如果curpage等于空 或者 不是数值类型 或者 curpage大于总数
    curpage = 1
    '那么curpage等于1
End If
Rs.absolutepage = curpage '设置当前记录集页面
i = 1
If Not Rs.Eof Then 如果不在记录集的未端,说明有记录
    Do While Not Rs.Eof and i < PageSize   如果已经是数据集的最后一条记录 或者 i已经大于 Rs.PageSize 就退出
        Response.Write Rs("字段名")
    i = i + 1 每循环一次 i + 1
    Rs.MoveNext 指针向下移动
    Loop
End If
%>

<%if curpage=1 then%>
首页
<%else%>
<a href="?page=1">首页</a>
<%end if%>

<%if curpage=1 then%>
上一页
<%else%>
<a href="?page=<%=curpage-1%>">上一页</a>
<%end if%>

<%if rs.pagecount<curpage+1 then%>
下一页
<%else%>
<a href="?page=<%=curpage+1%>">下一页</a>
<%end if%>

<%if rs.pagecount<curpage+1 then%>
尾页
<%else%>
<a href="?page=<%=rs.pagecount%>">尾页</a>
<%end if%>

说明  curpage 是上面用Reqeust.Querystring得到的当前页
首页:
这个使用当前页是否为第一页时判别,如果当前为第一页(也就是首页),那么显示首页两字,没有链接,否则提供直接跳转到首页的链接。
上一页:
当前为第一页时,链接失效,反过来,链接到当前面的上一页,这里使用:<%=curpage-1%>,就是用当前的页数减去1,得到上一页。
下一页:
这里需要使用rs.pagecount这个属性来比较,假如总页数小于当前页数加1的值,那表明这就是第后一页,链接将失效,否则链接到下一页。
尾页:
和下一页的功能一样判定出是最后页时链接失效,否则将当前页指定为rs.pagecount(总页数)。

<%
Rs.Close //注销对象
Set Rs = Nothing //释放资源
%>

Rs.Addnew  这是新增一条记录 打开的数据集必须为1,3

Set Rs = Server.CreateObject("Adodb.Recordset")
Sql = "Select * From Tealename"
Rs.Open Sql,Conn,1,3
Rs.Addnew() 添加记录到记录集未端
Rs("字段名1") = 值1
Rs("字段名2") = 值2
Rs("字段名3") = 值3
Rs.Update() 将修改更新到数据库内
Rs.Close
Set Rs = Nothing
%>
Rs.Update 更新数据

Set Rs = Server.CreateObject("Adodb.Recordset")
Sql = "Select * From Tealename Where id = 1"  '修改id为1的数据
Rs.Open Sql,Conn,1,3
Rs("欲更新的字段名1") = 更新后的值1
Rs.Update() 将修改更新到数据库内
Rs.Close
Set Rs = Nothing
Rs.Delete 删除

Set Rs = Server.CreateObject("Adodb.Recordset")
Sql = "Select * From Tealename Where id = 1"  '删除id为1的数据
Rs.Open Sql,Conn,1,3
Rs.Delete() '删除当前记录,但指针不会向下移动,所有如果要删除多条数据的时候 要用到循环
Rs.Close
Set Rs = Nothing

两大数据库操作对象 属性 讲教完毕