1、第第12章章 Web数据库的操作数据库的操作n12.1 数据库访问流程数据库访问流程n12.2 数据库的连接数据库的连接n12.3 数据的查询控制数据的查询控制n12.4 数据的添加、删除和修改数据的添加、删除和修改第1页,共51页。本章学习目标本章学习目标l l ASP访问数据库的流程访问数据库的流程l l 在在ASP中连接数据库的中连接数据库的4种方法种方法l l 数据库的常用查询方法数据库的常用查询方法l l 如何确定用户的操作权限如何确定用户的操作权限l l 进行数据添加操作的方法进行数据添加操作的方法l l 进行数据删除操作的方法进行数据删除操作的方法l l 进行数据修改操作的方法进
2、行数据修改操作的方法第2页,共51页。12.1 数据库访问流程数据库访问流程进行数据源操作的步骤如下:进行数据源操作的步骤如下:n(1)创建与数据库的连接,可以使用)创建与数据库的连接,可以使用ADO中的中的Connection对象或对象或RecordSet对象的相关属性和方法。对象的相关属性和方法。n(2)设定要操作数据库的命令,可以使用)设定要操作数据库的命令,可以使用ADO中的中的Connection对象、对象、Command对象或对象或RecordSet对象的相对象的相关方法和属性来完成。关方法和属性来完成。n(3)执行命令,可以使用)执行命令,可以使用ADO中的中的Connectio
3、n对象、对象、Command对象或对象或RecordSet对象的相关方法。对象的相关方法。n(4)得到数据后,就可以执行对数据的浏览、增加、)得到数据后,就可以执行对数据的浏览、增加、删除、修改等操作,这一步通常使用删除、修改等操作,这一步通常使用RecordSet对象的对象的有关方法和属性完成。有关方法和属性完成。n(5)关闭数据库,清除有关对象。)关闭数据库,清除有关对象。返回首页第3页,共51页。图12-1 ADO存取数据源流程返回本节第4页,共51页。12.2 数据库的连接数据库的连接(1)在)在Connection对象中设置对象中设置ConnectionSTRing参数时,可以通参数
4、时,可以通过设置系统数据源(过设置系统数据源(System DSN),),即通过设置即通过设置ODBC的方法来连接的方法来连接数据库。关于数据库。关于DSN的设定请参阅前面的章节。在的设定请参阅前面的章节。在ASP中利用中利用DSN连接连接数据库的代码如下:数据库的代码如下:Set conn=Server.CreateObject(ADODB.Connection)conn.Open DSN=txl;UID=sa;PWD=;Database=txl(2)如果不采用如果不采用DSN连接数据库,在设置连接数据库,在设置ConnectionSTRing参数时,可参数时,可以采用直接指定以采用直接指定
5、ODBC驱动程序连接数据库,连接驱动程序连接数据库,连接SQL Server数据库的数据库的代码如下:代码如下:Set conn=Server.CreateObject(ADODB.Connection)sTRProvider=Driver=SQL Server;Server=zjf;Database=txl;UID=sa;PWD=;conn.Open sTRProvider返回首页第5页,共51页。(3)通过)通过OLE DB连接。代码如下:连接。代码如下:Set conn=Server.CreateObject(ADODB.Connection)sTRPro=Provider=sqlole
6、db;Data Source=zjf;Initial Catalog=txl;User ID=sa;Password=;conn.Open sTRPro(4)在其他对象中,也可以通过设置在其他对象中,也可以通过设置ActiveConnection参数,完成对数据源参数,完成对数据源连接的设置。以常用的连接的设置。以常用的RecordSet对象为例,可以使用该对象的对象为例,可以使用该对象的Open方法,利方法,利用设置好的用设置好的ActiveConnection参数完成对数据库的连接,程序代码如下:参数完成对数据库的连接,程序代码如下:Set rs=Server.CreateObject(A
7、DODB.RecordSet)rs.Open t_student,Provider=sqloledb;Data Source=zjf;Initial Catalog&_=txl;User ID=sa;Password=;,adOpenStatic,adLockreadOnly,adCmdTable返回本节第6页,共51页。12.3 数据的查询控制数据的查询控制n数据库在网络中的应用大部分集中在数据的数据库在网络中的应用大部分集中在数据的查询操作上。数据查询需要使用查询操作上。数据查询需要使用ADO对象中对象中的的Connection对象和对象和RecordSet对象。对象。n进行数据查询时,主
8、要使用进行数据查询时,主要使用SQL语句中的语句中的Select语句,通过该语句就可以得到所要查询语句,通过该语句就可以得到所要查询的数据记录。的数据记录。n下面的例子将介绍如何利用下面的例子将介绍如何利用Session对象和对象和RecordSet对象的对象的AbsolutePosition属性以属性以一页或一条为单位来浏览查询结果。一页或一条为单位来浏览查询结果。返回首页第7页,共51页。例例12-1:第第1步:建立步:建立ASP查询,文件名为查询,文件名为select.asp。在这个查询中,使用了在这个查询中,使用了Session对象对象存储存储RecordSet对象,数据库的连接使用了
9、对象,数据库的连接使用了RecordSet对象的对象的Open方法。程序代码如下:方法。程序代码如下:学号学号 姓名姓名 第9页,共51页。性别性别 电话电话 籍贯籍贯 班级班级 民族民族%记录开始时,当前数据指针在记录开始时,当前数据指针在RecordSet对象的位置对象的位置 Session(start)=Session(rs).AbsolutePosition输出表中的数据输出表中的数据For j=0 To Session(flag)-1 Response.Write 记录结束时,当前数据指针在记录结束时,当前数据指针在RecordSet对象的位置对象的位置 Session(End)=S
10、ession(rs).Absoluteposition其中其中Session(rs).fields.count表示表的字段数表示表的字段数 For i=0 To Session(rs).fields.count-1第10页,共51页。把当前的数据记录显示出来把当前的数据记录显示出来 Response.Write&Session(rs).fields(i).value&Next Response.Write 移到下一条数据记录,然后判断是否到表尾,如果是,则把数据指针移到表头移到下一条数据记录,然后判断是否到表尾,如果是,则把数据指针移到表头 Session(rs).MoveNext If Se
11、ssion(rs).Eof Then Session(rs).MovePrevious Exit For End IfNextResponse.Write%第11页,共51页。第第2步:建立具有翻页功能的步:建立具有翻页功能的ASP程序,文件程序,文件名为名为link.asp。该文件将显示该文件将显示“上一页上一页”、“下一页下一页”、“开始记录开始记录”、“结束记录结束记录”和和“数据总条数数据总条数”等信息,并完成一定的链接关等信息,并完成一定的链接关系,如系,如“上一页上一页”及及“下一页下一页”加入了超链接。加入了超链接。注意注意:当记录指针位于第一页时,:当记录指针位于第一页时,“上
12、一页上一页”没有超链接,而当记录指针位于最后一页时,没有超链接,而当记录指针位于最后一页时,“下一页下一页”没有超链接。没有超链接。第12页,共51页。程序代码如下:程序代码如下:%Response.Write 数据总条数:数据总条数:&Session(rs).RecordCount&判断是否到表尾或记录解释否,如果是,则只给判断是否到表尾或记录解释否,如果是,则只给“上一页上一页”加上超链接加上超链接If(Session(rs).Eof)or(Session(End)=Session(rs).RecordCount)Then Response.Write 上上一页一页|Response.Wr
13、ite 下一页下一页否则看是不是表头,如果是则只给否则看是不是表头,如果是则只给“下一页下一页”加上超链接加上超链接ElseIf(Session(rs).Bof)or(Session(start)=1)Then Response.Write 上一页上一页|Response.Write 下一页下一页第13页,共51页。其他情况,都加上超链接其他情况,都加上超链接Else Response.Write 上一页上一页|Response.Write 下一页下一页 End IfResponse.Write 开始记录:开始记录:&Session(Start)&,结束记录:结束记录:&Session(End
14、)&。%第14页,共51页。图12-2 数据控制程序结果1:显示首记录第15页,共51页。图12-3 数据控制程序结果2:显示表中最后的数据记录返回本节第16页,共51页。12.4 数据的添加、删除和修改数据的添加、删除和修改n12.4.1 用户操作权限用户操作权限n12.4.2 数据的添加数据的添加n12.4.3 数据的删除数据的删除n12.4.4 数据的修改数据的修改返回首页第17页,共51页。12.4.1 用户操作权限用户操作权限n1确认用户的权限确认用户的权限n可以先将用户的名称、密码和权限代码存放可以先将用户的名称、密码和权限代码存放在一个数据表中,当用户登录网站时,确认用在一个数据
15、表中,当用户登录网站时,确认用户名和密码后,从数据库中取得该用户的权限户名和密码后,从数据库中取得该用户的权限代码,然后利用代码,然后利用Session变量标识该用户。假变量标识该用户。假设用户的相关信息都存放在表设用户的相关信息都存放在表users中,程序中,程序代码如下:代码如下:第18页,共51页。第21页,共51页。2确认用户的操作确认用户的操作在其他需要验证用户的页面通过该在其他需要验证用户的页面通过该Session变变量识别用户,代码如下:量识别用户,代码如下:If Session(UserLevel)1 Then Response.Redirect Error.asp End I
16、f第22页,共51页。图12-5 用户没有操作权限返回本节第23页,共51页。12.4.2 数据的添加数据的添加n在网站中,经常有添加数据记录的需求。如在网站中,经常有添加数据记录的需求。如一个提供电子邮件服务的网站,常常有人申请一个提供电子邮件服务的网站,常常有人申请加入,这时就要用到添加用户资料的功能。添加入,这时就要用到添加用户资料的功能。添加数据记录的方法很多,这里主要介绍两种。加数据记录的方法很多,这里主要介绍两种。一种是利用一种是利用SQL语句中的语句中的Insert命令,另一种命令,另一种是利用是利用ADO对象之一的对象之一的RecordSet对象的对象的AddNew方法。方法。
17、第24页,共51页。例例12-3:第第1步:首先创建一个添加数据的页面(步:首先创建一个添加数据的页面(INPUT.htm),),在该页面中详细列出用户在该页面中详细列出用户需输入的项目。其代码如下:需输入的项目。其代码如下:学学 生生 基基 本本 数数 据据 录录 入入 姓名:姓名:学号:学号:第25页,共51页。班级:班级:性别:性别:男男女女 民族:民族:第26页,共51页。籍贯:籍贯:联系电话:联系电话:第27页,共51页。图12-6 输入页面显示第28页,共51页。第第2步:建立表单处理程序(步:建立表单处理程序(d_ins.asp),),在该程序中利用在该程序中利用SQL语句中的语
18、句中的Insert命令添加数据记录。这里将示范使用命令添加数据记录。这里将示范使用Connection对象的对象的Execute方法运行方法运行Insert命令。命令。0 Then Response.Write 系统发生系统发生&conn.errors.Count&个错误!个错误!Else Response.Write 数据添加成功!数据添加成功!End IfSet conn=nothing%第31页,共51页。图12-7 数据录入正确和错误的显示第32页,共51页。第第3步:在添加数据时还可以利用步:在添加数据时还可以利用RecordSet对象的对象的AddNew方法增加数据记方法增加数据记
19、录。程序代码如下:录。程序代码如下:注意:注意:不能以只读方式打开表。不能以只读方式打开表。返回本节第35页,共51页。12.4.3 数据的删除数据的删除例例12-4:第第1步:建立删除页面,在该页面中可以选择删除的记录。其步:建立删除页面,在该页面中可以选择删除的记录。其显示结果如下图显示结果如下图12-8所示。所示。第36页,共51页。第第2步:建立数据删除程序,可以利用步:建立数据删除程序,可以利用SQL的的Delete命令删除数据记录。程序代码如下:命令删除数据记录。程序代码如下:第37页,共51页。第第3步:在删除记录时,还可以利用步:在删除记录时,还可以利用RecordSet对象的
20、对象的Delete方法来删除表中的数方法来删除表中的数据记录,如果要删除的记录可能不止一个,应该采用据记录,如果要删除的记录可能不止一个,应该采用UpdateBatch方法。程序代码如方法。程序代码如下:下:返回本节第39页,共51页。12.4.4 数据的修改数据的修改例例12-5:第第1步:建立数据修改页面。在修改数据时,应该向用户显示当步:建立数据修改页面。在修改数据时,应该向用户显示当前所选择记录的内容,便于修改。因此,在程序的代码中除了能前所选择记录的内容,便于修改。因此,在程序的代码中除了能够获得被操作的记录外(如上节所示),还要回显记录内容。程够获得被操作的记录外(如上节所示),还
21、要回显记录内容。程序代码如下所示:序代码如下所示:学学 生生 基基 本本 数数 据据 录录 入入 姓名:姓名:input type=text name=name size=20 value=学号:学号:input type=text name=number size=20 value=班级:班级:input type=text name=class size=20 value=第42页,共51页。性别:性别:option value=男男女女 民族:民族:input type=text name=minzu size=20 value=籍贯:籍贯:input type=text name=ji
22、guan size=20 value=第43页,共51页。联系电话:联系电话:input type=text name=phone size=20 value=在上例中,显示每个字段的同时显示了其对应的取值,在图在上例中,显示每个字段的同时显示了其对应的取值,在图12-7的页面中选的页面中选择择“修改修改”后,屏幕显示如图后,屏幕显示如图12-9所示。所示。第44页,共51页。图12-9 修改页面显示第45页,共51页。第第2步:建立数据修改程序。可以利用步:建立数据修改程序。可以利用SQL语句中的语句中的Update命命令修改表中的记录,程序代码如下:令修改表中的记录,程序代码如下:%取得用
23、户输入的数据取得用户输入的数据t_name=Trim(request.form(name)t_number=Trim(request.form(number)t_class=Trim(request.form(class)t_sex=Trim(request.form(sex)t_minzu=Trim(request.form(minzu)t_phone=Trim(request.form(phone)t_jiguan=Trim(request.form(jiguan)第46页,共51页。创建数据库的连接创建数据库的连接Set conn=Server.CreateObject(ADODB.Co
24、nnection)strProvider=Provider=sqloledb;Data Source=zjf;Initial Catalog=txl;User ID=sa;Password=;conn.Open strProvider设置修改时的设置修改时的SQL语句语句field=array(t_name,t_number,t_class,t_sex,t_mizu,t_phone,t_jiguan)value=array(t_name,t_number,t_class,t_sex,t_minzu,t_phone,t_jiguan)sql=UPDATE t_student SET For i=
25、0 To ubound(field)sql=sql&field(i)&=&value(i)&If i ubound(field)Then sql=sql&,Else第47页,共51页。sql=sql&where t_number=&t_number End IfNext执行修改操作执行修改操作conn.Execute sqlIf conn.Errors.Count0 Then Response.Write 系统发生系统发生&conn.errors.Count&个错误!个错误!Else Response.Write 你的信息已成功修改你的信息已成功修改!End IfSet conn=nothing%第48页,共51页。第第3步:也可以利用步:也可以利用RecordSet对象的对象的Update或或UpdateBatch方法方法修改表中的数据记录,程序代码如下:修改表中的数据记录,程序代码如下:返回本节第51页,共51页。