笔记|教程|网页
《ASP网页制作教程》。王国荣 编著,人民邮电出版社。
打开MDB数据库的方法:先定义一个OpenMDB子程序,然后在主程序中调用。
<%
Option Explicit
Sub OpenMDB(dbname,pwd,conn)
‘dbname-数据库文件的相对路径,pwd-数据库文件的密码,conn-用户定义的Connection对象。
'对于没有密码的数据库,pwd值可任意。
dim connstr
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;" ‘指定OLE DB驱动程序
connstr=connstr & "Data Source=" & Server.MapPath(""&dbname&"") ‘指定数据源
connstr=connstr & ";Jet OLEDB:Database Password=" & pwd ‘指定密码
conn.Open connstr
End Sub
Dim conn,rs
Call OpenMDB("vote.mdb","111",conn)
Set rs=Server.CreateObject("ADODB.Recordset")
rs.open "select * from vote",conn,2,2
%>
-----------------------------------------------------------------------
连接数据库时,若Microsoft提供有OLE DB驱动程序,就直接使用它,如Access。若没有提供,就需用数据库自己的ODBC驱动程序,如Foxpro。对不同的驱动程序来说,可能都有其专用的参数。
IIS/PWS 4.0只能存取Access97以前的数据库,而不能存取Access2000的数据库。
Microsoft宣称OLE DB驱动程序的执行效能优于ODBC驱动程序。
-----------------------------------------------------------------------
Cookies是记录在浏览器的信息,而其他ASP对象的信息存储在Server端,因此,只有在浏览器开始浏览Server的某一网页,而Server尚未下载任何数据给浏览器之前,浏览器才能与Server进行Cookie数据的交换。解决的办法是先将数据写到缓冲区。
由于在Cookie的生命周期中,只有关闭浏览器才会消失,而Session因有Timeout的设置,即使浏览器打开,中途也可能消失。因此,对于需要将数据分成各个阶段来输入的网页来说,使用Cookie对象来存放阶段性的数据比Session对象合适。
不同公司的浏览器Cookie是彼此不兼容的。
IE的Cookie存放在\windows\cookies\文件夹内。
Cookie生命周期的设置方法:
Response.Cookie("UserID")="comehope" : Response.Cookie("UserID").expires="2008/12/31"
-----------------------------------------------------------------------
网页中调用自己的链接:
<% myself=Request.ServerVariables("Path_info") %>
<A href="<% =myself %>?page=1">第一页</A>
-----------------------------------------------------------------------
Server对象概要
属性:
ScripTimeout 服务器连续处理脚本的最长时间,默认为90秒。
方法:
CreatObject 建立对象的实例
Excute 调用和执行另一个ASP脚本
GetLastError 建立发生错误的ASP Error对象
HTMLEncode 对HTML字串进行编码,可以用该方法显示HTML源代码
MapPath 指定物理路径。因为打开文件或数据库时,ASP规定必须指定文件的物理路径,该方法不支持相对目录标识符“.”和“..”。
Transfer 重定向到另一个脚本,来自第一个脚本的Request对象和其他对象的值都可以用于第二个脚本。
URLEncode 对地址进行编码
-----------------------------------------------------------------------
删除记录语句 rs.delete
由于delete方法会删除当前记录,因此调用delete方法之后,当前数据记录将不存在,我们必须再调用某方法将指针从此记录移开,方可再继续其他操作。
-----------------------------------------------------------------------
更新数据记录:先改变字段值,然后调用update方法,如:
rs("收盘价")=30.5
rs("成交量")=3589
rs.update
如果在未调用update方法前,指针从当前记录移开,ADO将自动调用update方法。
使用数组更新的方法:rs.update 字段名称数组,字段值数组。如:
Fieldname=Array("收盘价","成交量")
Fieldvalues=Array(30.5,3589)
rs.update Fieldname,Fieldvalues
在改变字段值之后,而未调用update方法之前,调用CancelUpdate方法会取消更新的数据。
-----------------------------------------------------------------------
添加记录的方法有修改记录的方法很相似,不同的是在此之前先用addnew方法建立一个缓冲区,系统会将此记录自动设置为当前记录,然后象修改记录一样,修改这个新记录的内容。如:
rs.addnew
rs("收盘价")=30.5
rs("成交量")=3589
rs.update
使用数组添加记录方法:rs.addnew 字段名称数组,字段值数组。
-----------------------------------------------------------------------
SQL Select语句的多种形式
select 字段列表 from 表
select 字段名 as 别名 from 表
select 字段名运算结果 as 别名 from 表
select * from 表 order by 字段列表 [desc]
注意:order by后的字段名称不可以是别名,如下面的语句是错误的;
select 学号,语文+数学 as 总成绩 from 成绩单 order by 总成绩
select top 10 * from 成绩单
select * from 表 where 条件表达式
select * from 表 where 姓名 like '王%' “%”代表0-15个字符
select * from 表 where 姓名 like '王_' “_”代表一个字符
select * from 表 where between 值1 and 值2
select * from 表 where 字段名 in(值1,值2,…)
若使用Access数据库,VB函数也可以用于where条件式中,如;
select * from 成绩单 where mid(姓名,2,1)="大"
选取姓名字段第二个字等于“大”的记录
在where表达式中使用变量;
数值变量; sql="select * from 股票行情表 where 收盘价 >" & vv
日期时间; sql="select * from 买卖记录 where 买卖日期=#" & vv & "#"
字符串: sql="select * from 股票行情表 where 股票代号='" & vv & "'"
-----------------------------------------------------------------------
若希望在重定义数组时保留数组元素的内容,需在数组名前加上Preserve保留字,例如:
ReDim x(5)
x(0)=10:x(1)=20
ReDim Preserve x(10)
-----------------------------------------------------------------------
Response对象概要
属性:
Buffer 是否先将数据写到缓冲区中。
ContentType 定义了要在响应主体中发送的数据类型,用户浏览器利用这一信息决定如何编译下载的HTTP响应内容。
IsClientConnected 只读属性,根据最近一次使用Response.write判断用户是否依然连接在服务器上。
集合:
Cookie
方法:
BinaryWrite 把二进制数据写到客户机上。
Clear 清空Buffer缓冲区。
End 结束浏览器下载。
Flush 输出缓冲区数据。
Redirect 重定向到另一个URL上。
Write 向HTTP响应写入信息。
-----------------------------------------------------------------------
一般在调试程序时会在其中夹杂显示中间结果的测试语句,但这一次测试没有问题并不保证以后就没有问题,这次把测试语句去掉,下次测试时又要写回去,为了避免这种情况,可以利用缓冲区来解决,如下:
Response.Buffer=True
''''''正常的程序
Response.Flush 输出此前程序运行的结果。
''''''这里是测试的语句
Response.Clear '若要输出以上测试结果只需将此句设为注释即