《网站建设与管理项目十二--在ASP中使用数据库多课件》由会员分享,可在线阅读,更多相关《网站建设与管理项目十二--在ASP中使用数据库多课件(81页珍藏版)》请在金锄头文库上搜索。
1、项目十二项目十二 在在ASP中使用数据库多表操作中使用数据库多表操作u项目背景项目背景在程序开发过程中,不仅需要对在程序开发过程中,不仅需要对单一数据表进行查询,还要进行多表查询,单一数据表进行查询,还要进行多表查询,用户通过多表查询,从多张表中提取出需用户通过多表查询,从多张表中提取出需要的数据。要的数据。比如学生信息与学生的成绩是两张比如学生信息与学生的成绩是两张不同的数据库表,但在动态网站开发过不同的数据库表,但在动态网站开发过程中,常常要通过学生的信息去查询或程中,常常要通过学生的信息去查询或修改其学生的成绩;又如学生的成绩与修改其学生的成绩;又如学生的成绩与学科也是不同的数据库表,也
2、经常去查学科也是不同的数据库表,也经常去查找学生某一学科的成绩。找学生某一学科的成绩。任务任务12.1使用内连接查询记录使用内连接查询记录任务任务12.2使用外连接查询记录使用外连接查询记录任务任务12.3使用分页技术使用分页技术u技术导读技术导读本项目技术重点:本项目技术重点:会使用内连接查询数据库表会使用内连接查询数据库表会使用外连接查询数据库表会使用外连接查询数据库表会使用分页技术会使用分页技术了解什么是了解什么是Web编程,理解编程,理解B/S和和C/S编编程模式的优缺点程模式的优缺点12.1 任务一使用内连接查询记录任务一使用内连接查询记录一、任务描述一、任务描述两表之间的内连接查询
3、记录,可以两表之间的内连接查询记录,可以实现两张不同表之间的关联,在显示的实现两张不同表之间的关联,在显示的效果中,可以用一条记录查看两张表中效果中,可以用一条记录查看两张表中内容,内连接查询可以轻松达到这样的内容,内连接查询可以轻松达到这样的效果,如图效果,如图12-1-1所示。所示。图图12-1-1 内连接查询内连接查询二、任务分析二、任务分析查询数据库两张表的记录时,可以在查询数据库两张表的记录时,可以在FORM子句中,使用子句中,使用INNERJOINON建建立内连接,也可以在立内连接,也可以在WHERE子句中,指定连子句中,指定连接条件建立内连接。接条件建立内连接。这两种都是非常常用
4、的连接查询方法。这两种都是非常常用的连接查询方法。三、知识准备三、知识准备12.1.1内连接查询基础知识内连接查询基础知识可以在可以在FORM子句中使用子句中使用INNERJOINON建立内连接,也可以在建立内连接,也可以在WHERE子句中指定连接条件建立内连接子句中指定连接条件建立内连接,例如:,例如:也可以用下面的语句实现。也可以用下面的语句实现。下面在下面在SQL语句语句FROM后面使用后面使用INNERJOIN和和ON关键字关联数据表关键字关联数据表“UserInfo”和和“SellSheet”,并根据输入,并根据输入的用户名称进行查询。的用户名称进行查询。程序代码如下。程序代码如下。
5、%IfTrim(Request(txt_name)Thentxt_name=Trim(Request(txt_name)Setrs=Server.CreateObject(ADODB.Recordset)Setrs=Server.CreateObject(ADODB.Recordset)sqlstr=selecta.UserName,b.BookName,b.DatetmfromUserInfoasainnerjoinSellSheetasbona.UserID=b.UserIDwherea.UserNamelike%&txt_name&%rs.opensqlstr,Conn,1,1%12.1
6、.2内连接查询详细语法内连接查询详细语法使用使用SQL连接两张表的基本语法是:连接两张表的基本语法是:select*FROMtable1INNERJOINtable2ONtable1.field1compoprtable2.field2部部 分分说说 明明table1, table2要组合其中的记录的表的名称要组合其中的记录的表的名称field1,field2要要联联接接的的字字段段的的名名称称。如如果果它它们们不不是是数数字字,则则这这些些字字段段的的数数据据类类型型必必须须相相同同,并并且且包包含含同同类数据,但是,它们不必具有相同的名称类数据,但是,它们不必具有相同的名称compopr任
7、何关系比较运算符:任何关系比较运算符:“=”、“”、“=”或者或者“”表表12-1 INNER JOIN 的操作内容的操作内容下例代码显示了通过下例代码显示了通过CategoryID字字段,连接段,连接Categories和和Products表的过表的过程。程。SELECTCategoryName,ProductNameFROMCategoriesINNERJOINProductsONCategories.CategoryID=Products.CategoryID;也可以在也可以在JOIN语句中,链接多个语句中,链接多个ON子句,基本语法如下。子句,基本语法如下。SELECTfieldsFR
8、OMtable1INNERJOINtable2ONtable1.field1compoprtable2.field1ANDONtable1.field2compoprtable2.field2ORONtable1.field3compoprtable2.field3;也可以通过如下语法,嵌套也可以通过如下语法,嵌套JOIN语语句,基本语法如下:句,基本语法如下:SELECTfieldsFROMtable1INNERJOIN(table2INNERJOIN(table3INNERJOIN(tablexINNERJOIN.)ONtable3.field3compoprtablex.fieldx)O
9、Ntable2.field2compoprtable3.field3)ONtable1.field1compoprtable2.field2;12.1.3使用使用UNION进行联合查询进行联合查询使用使用UNION运算符遵循的规则如下。运算符遵循的规则如下。(1)在使用)在使用UNION运算符组合的语句中,所运算符组合的语句中,所有选择列表的表达式数目必须相同(列名、有选择列表的表达式数目必须相同(列名、算术表达式、聚集函数等)。算术表达式、聚集函数等)。(2)在使用)在使用UNION组合的结果集中的相组合的结果集中的相应列,必须具有相同数据类型,或者两应列,必须具有相同数据类型,或者两种数据
10、类型之间,必须存在可能的隐性种数据类型之间,必须存在可能的隐性数据转换,或者提供了显式转换。数据转换,或者提供了显式转换。(3)结果集中列的名字或者别名,是由)结果集中列的名字或者别名,是由第一个第一个SELECT语句的选择列表决定。语句的选择列表决定。程序代码如下。程序代码如下。%IfTrim(Request(txt_name)Thentxt_name=Trim(Request(txt_name)Setrs=Server.CreateObject(ADODB.Recordset)sqlstr=selectUserID,UserNamefromUserInfowhereUserName=&tx
11、t_name&unionselectUserID,BookNamefromSellSheetwhereUserName=&txt_name&rs.opensqlstr,Conn,1,1%注意:对数据表进行联合查询时,结果注意:对数据表进行联合查询时,结果集中行的最大数量是各表行数之集中行的最大数量是各表行数之“和和”,而,而对数据表进行连接查询时,结果集中行的对数据表进行连接查询时,结果集中行的最大数量是各表行数之最大数量是各表行数之“积积”。四、任务实施四、任务实施步骤步骤1创建创建ASP网页网页图图12-1-2 新建新建ASP网页网页步骤步骤2建立两个数据库表建立两个数据库表图图12-1-
12、3 数据库表数据库表a图图12-1-4 数据库表数据库表b步骤步骤3输入代码输入代码两表两表ID相同的字段为相同的字段为图图12-1-5 网页代码网页代码步骤步骤4测试代码测试代码图图12-1-6 运行结果运行结果12.2 任务二使用外连接查询记录任务二使用外连接查询记录一、任务描述一、任务描述使用外连接查询记录,也可以实现使用外连接查询记录,也可以实现要求返回左侧或右侧数据集合中非匹配要求返回左侧或右侧数据集合中非匹配的数据,此方法多用于两表或多表间的的数据,此方法多用于两表或多表间的对比,测试效果图如图对比,测试效果图如图12-2-1所示。所示。图图12-2-1 使用外连接查询记录使用外连
13、接查询记录二、任务分析二、任务分析外连接是对内连接的扩充,除了将外连接是对内连接的扩充,除了将两个数据集合中重叠部分以内的数据行两个数据集合中重叠部分以内的数据行连接起来之外,还可以根据要求返回左连接起来之外,还可以根据要求返回左侧或右侧数据集合中非匹配的数据,即侧或右侧数据集合中非匹配的数据,即左外连接(左外连接(LEFTOUTERJOIN)和右)和右外连接(外连接(RIGHTOUTERJOIN)。)。三、知识准备三、知识准备12.2.1左外连接左外连接LEFTOUTERJOIN其参考程序代码如下。其参考程序代码如下。%IfTrim(Request(txt_name)Thentxt_name
14、=Trim(Request(txt_name)Setrs=Server.CreateObject(ADODB.Recordset)sqlstr=selecta.UserName,b.BookName,b.DatetmfromUserInfoasaleftouterjoinSellSheetasbona.UserID=b.UserIDwherea.UserNamelike%&txt_name&%rs.opensqlstr,Conn,1,1%12.2.2右外连接右外连接RIGHTOUTERJOIN基本的参考程序代码如下。基本的参考程序代码如下。%IfTrim(Request(txt_name)Th
15、entxt_name=Trim(Request(txt_name)Setrs=Server.CreateObject(ADODB.Recordset)sqlstr=selecta.UserName,b.BookName,b.DatetmfromUserInfoasarightouterjoinSellSheetasbona.UserID=b.UserIDwhereb.BookNamelike%&txt_name&%rs.opensqlstr,Conn,1,1%四、任务实施四、任务实施步骤步骤1创建创建ASP网页网页图图11-2-2 新建新建ASP网页网页步骤步骤2建立两个数据库表建立两个数据库
16、表图图12-2-3 数据库表数据库表a图图12-2-4 数据库表数据库表b步骤步骤3输入代码输入代码左外连接左外连接LEFTOUTERJOIN图图12-2-5 网页代码网页代码步骤步骤4测试代码测试代码图图11-2-6 运行结果运行结果12.3 任务三使用分页技术任务三使用分页技术一、任务描述一、任务描述ASP使用分页技术的作用,显示指定使用分页技术的作用,显示指定行记录,在记录集较多的时候,一般都行记录,在记录集较多的时候,一般都会用到分页技术,特别是在大型的网站会用到分页技术,特别是在大型的网站上面,尤为常用,分页技术的显示效果上面,尤为常用,分页技术的显示效果如图如图12-3-1所示。所
17、示。图图12-3-1 分页技术最终效果分页技术最终效果二、任务分析二、任务分析在动态网页读取数据库中的记录时,有在动态网页读取数据库中的记录时,有些记录的总数有可能有上百条、上千条,甚些记录的总数有可能有上百条、上千条,甚至是上万条,这对于一个页面的显示带来了至是上万条,这对于一个页面的显示带来了很多不方便的地方。很多不方便的地方。而而pagesize这个属性,通过相关的技术这个属性,通过相关的技术编程,可以实现记录的分页功能。编程,可以实现记录的分页功能。三、知识准备三、知识准备12.3.1ASP分布技术代码解析分布技术代码解析1连接数据库连接数据库基本的参考代码如下所示。基本的参考代码如下
18、所示。2创建分页创建分页基本参考代码如下。基本参考代码如下。3分页记录循环分页记录循环以下为基本参考代码。以下为基本参考代码。4分页链接分页链接如下代码所示。如下代码所示。当前第当前第页,共有页,共有页,共有:页,共有:条记录条记录以下代码显示了基本的参考内容。以下代码显示了基本的参考内容。首页。首页。首页首页上一页。上一页。ahref=?curpage=上一页上一页%ifrs.pagecount下一页。下一页。ahref=?curpage=下下一页一页%ifrs.pagecount尾页。尾页。ahref=?curpage=尾页尾页12.3.2建立建立Access数据库数据库1创建数据库创建数
19、据库图图12-3-2 Access数据库软件数据库软件2保存名称保存名称图图12-3-3 保存数据库表保存数据库表3设计字段名称和数据类型设计字段名称和数据类型图图12-3-4 数据库表设计字段和数据类型数据库表设计字段和数据类型4输入数据输入数据图图12-3-5 输入相应数据输入相应数据四、任务实施四、任务实施步骤步骤1新建新建AdobeDreamweaver页面页面图图12-3-6 新建新建ASP网页网页步骤步骤2输入代码输入代码rs.PageCountthen如果接收如果接收的页数大于总页数的页数大于总页数rs.AbsolutePage=rs.PageCount设置当前设置当前显示页等于最后页显示页等于最后页elseifPage1then%aHref=test.asp?Page=首页首页aHref=test.asp?Page=上一页上一页%ifrequest(page)rs.pagecountthen%aHref=test.asp?Page=下一页下一页aHref=test.asp?Page=尾页尾页图图12-3-7 网页代码网页代码步骤步骤3测试代码测试代码图图12-3-8 运行结果运行结果