陌小夕经典ASP全套详解教程第11章 数据库.docx
- 文档编号:3181369
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:23
- 大小:22.88KB
陌小夕经典ASP全套详解教程第11章 数据库.docx
《陌小夕经典ASP全套详解教程第11章 数据库.docx》由会员分享,可在线阅读,更多相关《陌小夕经典ASP全套详解教程第11章 数据库.docx(23页珍藏版)》请在冰点文库上搜索。
陌小夕经典ASP全套详解教程第11章数据库
主讲:
李炎恢
第1页共14页北风网ASP视频教程
第11章数据库
1.认识数据库
2.建立ACCESS数据库
3.连接数据库
4.操作数据库
5.分页技术
主讲教师:
李炎恢
官方网站:
11.1认识数据库
所谓数据库,是指依照一定的格式存放在一起的数据记录文件,在日常生活中,凡是
个人通讯簿、公司帐簿、客户名单、支票明细、成绩等都数据数据库,它们不仅具有固定的
格式与特性,而且可以用表格形式来记录。
由于数据库具有自动化管理,快速查询及统计的
优点,因此,学习处理数据库已经成为现代人必备的技能。
我们在前面曾介绍过Cookie,Application变量,Session变量,服务器端文件存取等存储数据
的方法,现在,我们就把这些方法与数据库做个比较。
存储数据的方法比较
Cookie优点:
可以记录浏览这的信息并决定Cookies的声明周期
Cookies存放在浏览器端,不会占用服务器的空间。
缺点:
浏览这可能禁止服务器端在浏览器端写入Cookies
只能记录字符串,数值,日期等简单的数据类型,无法记录对象,
数组等复杂的数据类型。
Cookies可能造成安全上的威胁,导致个人信息被窃取。
Application变量优点:
可以记录真个网站的信息。
缺点:
若服务器关机或超过20分钟之内没有再存取网页,Application
对象所记录的任何变量都被恢复为空。
主讲:
李炎恢
第2页共14页北风网ASP视频教程
Session变量优点:
可以记录个别浏览器端的信息
缺点:
若服务器关机或超过20分钟之内没有再存取网页,Session对象
所记录的任何变量都被恢复为空。
服务器端文件存取优点:
适合记录少量数据,可进行写入或读取,而且没有声明周期的题。
缺点:
当数据量很大时,文件的存取将变得没有效率。
数据库优点:
适合记录大量得数据,可进行读取,插入,删除,更新和查询。
缺点:
虽然数据库得查询速度快,但打开数据库连接则需较多得时间。
11.2何为数据库管理系统(DBMS)
"数据库关系系统"时用来操作及管理数据库得软件,MicrosoftAccess就属于数据库管
理系统的软件,用户通过这个软件可以进行数据的输入,修改,编辑等工作。
11.3构成数据库的基本组件
我们以亲朋好友.mdb为例,这个数据库由6条数据组成,每一条数据我们称之为“记录”
(RECORD),每条记录又包含编号,姓名,生日,电话等5个字段(FIELD)。
在ACCESS数据库中,这些数据组合成为一个“表”,数个性质相同的表组合一个数据库。
11.4何为关系型数据库(RDB)
个人数据库在使用及管理技术较为简单,但如果时一个包含许多数据库文件的大型数据
库系统,则需要专业的管理技术,诸如:
如何快速找到全国各地的客户及订单数据?
如何确
保输入数据的正确性?
如何避免不同地区的人员同时更改同一条信息?
如果建立数据库文
件之间的关联性?
如何使各数据库可以兼容共享?
为了避免数据库或表内的字段一再重复,例如:
在“学生个人表”内已有学生个人数据,若
在“学生成绩单表”又填入学生个人数据,将造成数据的重复。
因此,利用关系型数据库,
我们可以在表之间使用一个字段(如学生的学号),把学生个人数据与成绩,操行成绩连接
编号姓名性别生日电话
101小齐男1983/10/310010-55536
102琳达女1973/3/140010-55534
103安琪女1965/8/120010-55535
104陶子女1988/11/200010-55576
105包子男1981/6/90010-55512
106饺子女1984/5/180010-55535
第一条记录
第六条记录
主讲:
李炎恢
第3页共14页北风网ASP视频教程
起来整合处理。
将两种以上性质不同的表,经过关联后,就可以当作一个整体的数据来处理,快速达到
数据查询与整合的目的,此即所谓的“关系型数据库(RelationalDataBase)”。
以下便使我们用“学生管理系统”来说明数据库与表的关系,表之间以“学号”这个字段连
接。
由上方3个表,我们可同时找到学号101同学的姓名,地址,连接,到2,3个表就可
查到各科成绩,名次,功过记录,操行总分等,并将显示到同一张成绩单上。
11.5ASP与数据库
ASP是通过一组统称为ADO(ActiveXDataObjects)的对象模块来存取数据库,无论
您采用的是Access,SQLServer,VisualFoxPro,Informix,Oracle,dBase或其他数据库,只
要该数据库具有对应的ODBC或OLEDB驱动程序,ADO对象就能加以存取。
如图:
要知道系统安装了哪些ODBC或OLEDB驱动程序,Windows2000的用户可以打开“控制面板”,
依序在“管理工具”,“ODBC数据源”上双击鼠标左键。
事实上,ASP提供的ADO对象模块包含了下列6个对象和3个集合,比较常用的则是
Connection,Recordset,Command,Field等。
11.6建立Access数据库
虽然不同的系统可能安装不同的ODBC或OLEDB驱动程序,但只要您安装了IIS,系统上
至少会由MicrosoftAccessDrive,MicrosoftODBCforOracle,SQLServer等ODBC驱动程
序。
换句话说,你至少可以用Access,SQLServer,Oracle等3种最主流的数据库从事ASP网页
数据库设计。
由于MicrosoftAccess2000属于Office2000家族,取得较为容易,且界面和Office家族
相似,学习起来没有什么障碍!
步骤:
1.打开,新建空数据库。
2.保存到服务器路径。
3.创建一张表。
4.输入字段。
学生个人表
学号:
101
姓名:
卜快乐
性别:
女
电话:
574514
地址:
盐城大庆路
家长:
郝郁闷,卜美丽
职业:
无业
学生成绩表
学好:
101
语文:
89
英语:
90
数学:
91
计算机:
70
总分:
340
职业:
无业
学生操行表
学好:
101
旷课:
1次
请假:
10次
大功:
没有
小功:
1次
大过:
没有
等级:
乙
主讲:
李炎恢
第4页共14页北风网ASP视频教程
5.定义主键。
(可选)
6.输入信息。
11.7打开和关系数据库连接
在存取数据库之前,您必须使用ADO对象模块的Connection对象打开数据库连接。
格式:
Dimconn
Setconn=Server.CreateObject("ADODB.Connection")
说明:
Connectiong对象主要的用途是打开与关闭数据库连接。
方法:
Close关闭数据库连接
Open打开一个数据库连接
Execute对表进行SQL查询
属性:
ConnectionString描述数据库的连接方式
数据库连接的完整代码:
(AccessOLEDB驱动程序)
dimconn
setconn=server.createobject("adodb.connection")
conn.connectionstring="Provider=Microsoft.Jet.OLEDB.4.0;DataSource
="&server.mapPath("数据库名.mdb")
conn.open
'数据库操作代码
conn.close
setconn=nothing
程序解释:
使用Server.CreateObject方法建立Connection对象实例,再指派给conn.
使用Connection对象的ConnectionSting属性设置数据库
的连接方式,其中Provider=Microsoft.Jet.OLEDB.4.0;表示采用
OLEDB驱动方式进行连接。
而Server.MapPath("数据库名.mdb")就是
数据库的路径,最后使用方法Open打开数据库。
最后,打开数据库进行了一系列的操作,要关闭和销毁对象实例的。
conn.close关闭数据库连接
setconn=nothing释放Connection对象实例所占的空间。
主讲:
李炎恢
第5页共14页北风网ASP视频教程
11.8数据库记录操作
在您学会使用Connection对象打开数据库连接之后,接下来,您可以使用ADO对象模块
提供的Recordset对象存取表的记录。
建立Recordset对象实例的方法如下:
Setrs=Server.CreateObject("ADODB.Recordset")
Recordset对象
说明:
Recordset对象可以存取表的记录,包括读取,插入,删除或更新等。
方法:
AddNew插入记录,需再执行Update方法才能完成数据新增
Delete删除指针所指到的记录
Open取得Recordset对象,它可能包含表的所有记录或符合SQL查询的记录。
Update完成更新
MoveNext移到指针的下一条记录。
MovePrevious移到指针的上一条记录。
MoveFirst移到第一条记录。
MoveLast移到最后一条记录。
MoveNum移到对象种目前指针的下个Num条记录
属性:
AbsolutePosition目前指针的绝对位置,其值再1~RecordCount属性的值之间。
AbsolutePage当Recordset对象由设置分页时,AbsolutePage会返回目前的页码。
BOF若指针位于第一针记录前,返回True,否则返回False
EOF若指针位于最后一条记录之后,返回True,否则返回False
Filter筛选记录
MaxRecords可以返回的最多条记录数。
PageCount返回分页总数。
PageSize设置分页时,PageSize为每页的记录条数。
RecordCount返回记录条数
cursorType指针对象中的移动方向有四种参数值
设置值常数说明
0adOpenForwardOnly默认值,表示只能向下一条记录移动。
1adOpenKeyset指针可以自由上下移动,可看到更新记录,看不到新增和删除记录
2adOpenDynamic什么都可以看到,消耗资源多,而且Access不支持
3adOpenStatic自由移动指针,看不到新增和删除或更新,和数
据库中断了。
主讲:
李炎恢
第6页共14页北风网ASP视频教程
LockType能否写入记录
设置值常数说明
1adLockReadOnly默认值,表示所有记录只读,不允许修改
2adLockPessimistic当开始编辑某条字段时,锁定记录,待编辑完后
update更新,解锁
3adLockOptimistic调用update更新锁定记录,和2比起来有不同步
的问题,但效率好
4adLockBatchOptimistic允许我们以批次的方式更改记录
CursorLocation设置记录存放的位置
设置值常数说明
2adUserServer表示记录存放在服务器上
3adUserClient表示记录被下载到浏览器端
<%
dimconn
setconn=server.createobject("adodb.connection")
conn.connectionstring="provider=microsoft.jet.oledb.4.0;datasource="&
server.mappath("friend.mdb")
conn.open
dimrs
setrs=server.createobject("adodb.recordset")
rs.open"择友俱乐部",conn,1,1
ifnotrs.eofthen
response.write"编号:
"&rs("编号")&"
"
response.write"姓名:
"&rs("姓名")&"
"
response.write"性别:
"&rs("性别")&"
"
response.write"年龄:
"&rs("年龄")&"
"
response.write"星座:
"&rs("星座")&"
"
response.write"身高:
"&rs("身高")&"
"
else
response.write"到达数据库的结尾,无法显示记录。
"
endif
rs.close
setrs=nothing
conn.close
setconn=nothing
%>
主讲:
李炎恢
第7页共14页北风网ASP视频教程
程序解释:
首先程序代码意义就是使用Connection对象打开数据库连接,这个
Access数据库名称为friend.mdb,它里面有一张“择友俱乐部”表,里面有25调记录。
其次建立一个Recordset对象实例,然后指派给变量rs.
在这里,我们来看一下Recordset的语法:
语法:
Rs.Open(Source,Connection,Connection,CursorType)
参数:
Source:
这个是Command对象或包含指定的字符串(择友俱乐部)
Connection:
用来打开数据库连接的Connection对象,(conn)
CursorType:
设置指针对象的移动方向,
(1),表示指针自由的上下移动。
LockType:
设置能否写入表,
(1)表示指针只读,不能写入。
指针:
1,1
所以对照语法,出来的格式为:
rs.open“择友俱乐部”,conn,1,1
再然后,我们读取记录,指针默认会放在第一针位置,如图:
第一列第二列第三列第四列
Rs.bof就是检测指针是否在第一条记录之前,也就是说检测是否有数据。
Rs.eof就是检测指针是否在第一条记录之后,同上。
若要移动指针的位置,必须使用Recordset对象的MoveNext(移动到下一条记录),或者
MovePrevious(移动到上一条记录)或者MoveFirst(移动第一条记录),MoveLast(移动最后一
条记录)或MoveNum(移动到下Num记录).
修改第一个范例:
(显示全部记录的方法)
BOF
rs.close
setrs=nothing
conn.close
setconn=nothing
%>
EOF
主讲:
李炎恢
第8页共14页北风网ASP视频教程
在第一个范例我们用了IF语句进行了判断,然后输出了数据,因为IF本身不是循环,所以
只能显示一条数据,也就是第一条数据。
我们如何显示全部数据,当然就是用循环语句了。
Dowhilenotrs.eof
……
……
rs.movenext
loop
程序解释:
首先我们用了当循环,判断了条件成立,输入第一行数据,然后,遇到了
rs.movenext这个属性方法,它的用途就是将指针转移到下一个记录点上,然后循环再判断,
知道下一行没有数据了,dowhilenotrs.eof判断为假的时候,才结束循环。
这样显示比较丑陋,如果做城表格的形式呢?
<%
dimconn
setconn=server.createobject("adodb.connection")
conn.connectionstring="provider=microsoft.jet.oledb.4.0;datasource="&
server.mappath("friend.mdb")
conn.open
dimrs
setrs=server.createobject("adodb.recordset")
rs.open"择友俱乐部",conn,1,1
%>
<%
dowhilenotrs.eof
%>
主讲:
李炎恢
第9页共14页北风网ASP视频教程
这个就把数据库里的数据在网页上显示了。
11.9新增表的记录
语法:
Rs.AddNewFieldname,Value
参数:
再表新增一条记录,其字段名称为Fieldname,数据为Value,
请注意,须再执行rs.update方法才能完成新增。
范例:
(部分代码)
指针:
1,3
<%
rs.movenext
loop
%>
<%
rs.close
setrs=nothing
conn.close
setconn=nothing
%>
<%
dimrs
setrs=server.createobject("adodb.recordset")
rs.open"择友俱乐部",conn,1,3
rs.addnew
rs("姓名")="李炎恢"
rs("年龄")="20~30"
rs("性别")="男"
rs("星座")="天蝎座"
rs("身高")="175~180"
主讲:
李炎恢
第10页共14页北风网ASP视频教程
程序解释:
首先打开这个表的方式出现了改变,上一个例子中是只读,现在是写入,
所以要要将rs.Open打开的方式改为3,3我们可以先记一个口诀:
1,1能读取,1,3可写入,
然后写入数据库也很明了:
rs.addnew….rs.update之间写入就可以了。
11.10如何读取字段名称及字段数目
我们知道,Recordset对象是以二维数组的形式存储表的记录。
事实上,Recordset对
象的每一行都是属于Fields集合,而Fields集合的每一个项目都是一个Field对象。
正因如此,所以我们能够利用Fields集合的Count属性读取表的字段数目,然后Fields
对象的Name和Value属性分别读取字段名称,字段数据。
语法:
rs.Fields.Count返回字段个数
rs.Fields(i).name返回字段标题
rs.Fields(i).value返回字段的信息
范例:
第一列第二列。
。
。
Field对象(Fields(0))Field对象(Fields
(1))。
。
。
Field对象(Fields(0))Field对象(Fields
(1))。
。
。
Field对象(Fields(0))Field对象(Fields
(1))。
。
。
rs("体重")="65~75"
rs("职业")="老师"
rs.update
%>
<%
dimconn
setconn=server.createobject("adodb.connection")
conn.connectionstring="provider=microsoft.jet.oledb.4.0;"&"datasource="
&server.mappath("friend.mdb")
conn.open
dimrs
setrs=server.createobject("adodb.recordset")
rs.open"择友俱乐部",conn,1,1
%>
<%
fori=0tors.fields.count-1
主讲:
李炎恢
第11页共14页北风网ASP视频教程
程序解释:
Fields集合是一个数组,而数组里面存放的各个元素都是一个Field的对
象,因此我们取数据的时候需要用Count属性取得字段个数,然后用for循环。
要注意,rs.Fields.count返回的是字段的个数,我们这里有8个字段,所以返回数字8,
但是因为数组是从0开始计算的,所以,如果要用循环的话,是0-7之间循环,因此最后
就写成了forI=0tors.fields.count-1.
11.11使用Recordset对象的Sort属性来进行排序。
将Recordset对象进行排序的方法有两种,其有使用Recordset对象的Sort属性,其
二就是使用SQL语句。
语法:
rs.sort=”语文”或rs.sort=”语文DESC”或rs.sort=”语文DESC,数学DESC”
%>
<%
fori=0tors.fields.count-1
response.write"
next
%>
<%
dowhilenotrs.eof
response.write"
fori=0tors.fields.count-1
response.write"
next
response.write"
rs.movenext
loop
%>
<%
rs.close
setrs=nothing
conn.close
setconn=nothing
%>
主讲:
李炎恢
第12页共14页北风网AS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 陌小夕经典ASP全套详解教程第11章 数据库 陌小夕 经典 ASP 全套 详解 教程 11