资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,Page,*,点击此处结束放映,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,Page,*,项目十二,在,ASP,中使用数据库多表操作,项目背景,在程序开发过程中,不仅需要对单一数据表进行查询,还要进行多表查询,用户通过多表查询,从多张表中提取出需要的数据。,项目十二 在ASP中使用数据库多表操作项目背景,比如学生信息与学生的成绩是两张不同的数据库表,但在动态网站开发过程中,常常要通过学生的信息去查询或修改其学生的成绩;又如学生的成绩与学科也是不同的数据库表,也经常去查找学生某一学科的成绩。,比如学生信息与学生的成绩是两张不同的数据库表,但在动,任务,12.1,使用内连接查询记录,任务,12.2,使用外连接查询记录,任务,12.3,使用分页技术,任务12.1 使用内连接查询记录,技术导读,本项目技术重点:,会使用内连接查询数据库表,会使用外连接查询数据库表,会使用分页技术,了解什么是,Web,编程,理解,B/S,和,C/S,编程模式的优缺点,技术导读,12.1,任务一使用内连接查询记录,一、任务描述,两表之间的内连接查询记录,可以实现两张不同表之间的关联,在显示的效果中,可以用一条记录查看两张表中内容,内连接查询可以轻松达到这样的效果,如图,12-1-1,所示。,12.1 任务一使用内连接查询记录一、任务描述,图,12-1-1,内连接查询,图12-1-1 内连接查询,二、任务分析,查询数据库两张表的记录时,可以在,FORM,子句中,使用,INNER JOIN,ON,建立内连接,也可以在,WHERE,子句中,指定连接条件建立内连接。,这两种都是非常常用的连接查询方法。,二、任务分析 查询数据库两张表的记录时,可以在FOR,三、知识准备,12.1.1,内连接查询基础知识,可以在,FORM,子句中使用,INNER JOINON,建立内连接,也可以在,WHERE,子句中指定连接条件建立内连接,例如:,三、知识准备12.1.1 内连接查询基础知识,%Conn.Execute(select a.User,也可以用下面的语句实现。,也可以用下面的语句实现。,下面在,SQL,语句,FROM,后面使用,INNER JOIN,和,ON,关键字关联数据表,“UserInfo”,和,“SellSheet”,,并根据输入,的用户名称进行查询。,下面在SQL语句FROM后面使用INNER JOI,程序代码如下。,sqlstr=select a.UserName,b.Bo,12.1.2,内连接查询详细语法,使用,SQL,连接两张表的基本语法是:,select*FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2,12.1.2 内连接查询详细语法使用SQL连接两张表的,表,12-1 INNER JOIN,的操作内容,表12-1 INNER JOIN 的操作内容,下例代码显示了通过,CategoryID,字段,连接,Categories,和,Products,表的过程。,SELECT CategoryName,ProductName,FROM Categories INNER JOIN Products,ON Categories.CategoryID=Products.CategoryID;,下例代码显示了通过 CategoryID 字段,连接,也可以在,JOIN,语句中,链接多个,ON,子句,基本语法如下。,SELECT fields,FROM table1 INNER JOIN table2,ON table1.field1 compopr table2.field1 AND,也可以在 JOIN 语句中,链接多个 ON 子句,基,ON table1.field2 compopr table2.field2 OR,ON table1.field3 compopr table2.field3;,ON table1.field2 compopr table,也可以通过如下语法,嵌套,JOIN,语句,基本语法如下:,SELECT fields,FROM table1 INNER JOIN,(table2 INNER JOIN(table3,INNER JOIN(tablex INNER JOIN.),也可以通过如下语法,嵌套 JOIN 语句,基本语法如,ON table3.field3 compopr tablex.fieldx),ON table2.field2 compopr table3.field3),ON table1.field1 compopr table2.field2;,ON table3.field3 compopr table,12.1.3,使用,UNION,进行联合查询,使用,UNION,运算符遵循的规则如下。,(,1,)在使用,UNION,运算符组合的语句中,所有选择列表的表达式数目必须相同(列名、算术表达式、聚集函数等)。,12.1.3 使用UNION进行联合查询 使用UNI,(,2,)在使用,UNION,组合的结果集中的相应列,必须具有相同数据类型,或者两种数据类型之间,必须存在可能的隐性数据转换,或者提供了显式转换。,(,3,)结果集中列的名字或者别名,是由第一个,SELECT,语句的选择列表决定。,(2)在使用UNION组合的结果集中的相应列,必须具有相同,程序代码如下。,sqlstr=select UserID,UserName,注意:对数据表进行联合查询时,结果集中行的最大数量是各表行数之,“,和,”,,而对数据表进行连接查询时,结果集中行的最大数量是各表行数之,“,积,”,。,注意:对数据表进行联合查询时,结果集中行的最大数量是,四、任务实施,步骤,1,创建,ASP,网页,图,12-1-2,新建,ASP,网页,四、任务实施 步骤1创建ASP网页图12-1-2 新,步骤,2,建立两个数据库表,图,12-1-3,数据库表,a,步骤2建立两个数据库表图12-1-3 数据库表a,图,12-1-4,数据库表,b,图12-1-4 数据库表b,步骤,3,输入代码,%,两表,ID,相同的字段为,rs.close,conn.close,set conn=nothing,%,rs.close,图,12-1-5,网页代码,图12-1-5 网页代码,步骤,4,测试代码,图,12-1-6,运行结果,步骤4测试代码图12-1-6 运行结果,12.2,任务二使用外连接查询记录,一、任务描述,使用外连接查询记录,也可以实现要求返回左侧或右侧数据集合中非匹配的数据,此方法多用于两表或多表间的对比,测试效果图如图,12-2-1,所示。,12.2 任务二使用外连接查询记录一、任务描述,图,12-2-1,使用外连接查询记录,图12-2-1 使用外连接查询记录,二、任务分析,外连接是对内连接的扩充,除了将两个数据集合中重叠部分以内的数据行连接起来之外,还可以根据要求返回左侧或右侧数据集合中非匹配的数据,即左外连接(,LEFT OUTER JOIN,)和右外连接(,RIGHT OUTER JOIN,)。,二、任务分析 外连接是对内连接的扩充,除了将两个数据集,三、知识准备,12.2.1,左外连接,LEFT OUTER JOIN,其参考程序代码如下。,Set rs=Server.CreateObject(AD,12.2.2,右外连接,RIGHT OUTER JOIN,基本的参考程序代码如下。,Set rs=Server.CreateObject(AD,四、任务实施,步骤,1,创建,ASP,网页,图,11-2-2,新建,ASP,网页,四、任务实施 步骤1创建ASP网页图11-2-2 新建,步骤,2,建立两个数据库表,图,12-2-3,数据库表,a,步骤2建立两个数据库表图12-2-3 数据库表a,图,12-2-4,数据库表,b,图12-2-4 数据库表b,步骤,3,输入代码,左外连接,LEFT OUTER JOIN,rs.movenext,图,12-2-5,网页代码,图12-2-5 网页代码,步骤,4,测试代码,图,11-2-6,运行结果,步骤4测试代码图11-2-6 运行结果,12.3,任务三使用分页技术,一、任务描述,ASP,使用分页技术的作用,显示指定行记录,在记录集较多的时候,一般都会用到分页技术,特别是在大型的网站上面,尤为常用,分页技术的显示效果如图,12-3-1,所示。,12.3 任务三使用分页技术一、任务描述,图,12-3-1,分页技术最终效果,图12-3-1 分页技术最终效果,二、任务分析,在动态网页读取数据库中的记录时,有些记录的总数有可能有上百条、上千条,甚至是上万条,这对于一个页面的显示带来了很多不方便的地方。,而,pagesize,这个属性,通过相关的技术编程,可以实现记录的分页功能。,二、任务分析 在动态网页读取数据库中的记录时,有些记录,三、知识准备,12.3.1 ASP,分布技术代码解析,1,连接数据库,基本的参考代码如下所示。,三、知识准备12.3.1 ASP分布技术代码解析,%,Set conn=Server.CreateObject(Adodb.Connection),connstr=PRovider=Microsoft.JET.OLEDB.4.0;Data Source=&Server.MapPath(data.mdb),conn.open connstr,Set rs=Server.CreateObject(Ad,2,创建分页,基本参考代码如下。,if curpage=then curpage=1,3,分页记录循环,以下为基本参考代码。,end if,4,分页链接,如下代码所示。,当前第,页,共有,页,共有:,条记录,以下代码显示了基本的参考内容。,4分页链接如下代码所示。,首页。,首页,首页。,上一页。,上一页,上一页。,下一页。,下一页,下一页。,尾页。,尾页,尾页。,12.3.2,建立,Access,数据库,1,创建数据库,图,12-3-2 Access,数据库软件,12.3.2 建立Access数据库1创建数据库图12-,2,保存名称,图,12-3-3,保存数据库表,2保存名称图12-3-3 保存数据库表,3,设计字段名称和数据类型,图,12-3-4,数据库表设计字段和数据类型,3设计字段名称和数据类型图12-3-4 数据库表设计字段,4,输入数据,图,12-3-5,输入相应数据,4输入数据图12-3-5 输入相应数据,四、任务实施,步骤,1,新建,Adobe Dreamweaver,页面,图,12-3-6,新建,ASP,网页,四、任务实施 步骤1新建Adobe Dreamweave,步骤,2,输入代码,rs.PageCount then,如果接收的页数大于总页数,page=1 设置变量PAGE=1,rs.AbsolutePage=rs.PageCount,设置当前显示页等于最后页,elseif Page,end if 利用for next 循环依次读出记录,1 then%,首页,上一页,1 then%,rs.pagecount then%,下一页,尾页,rs.pagec,图,12-3-7,网页代码,图12-3-7 网页代码,步骤,3,测试代码,图,12-3-8,运行结果,步骤3测试代码图12-3-8 运行结果,
展开阅读全文