网站建设与管理项目十二-在ASP中使用数据库多课件_第1页
网站建设与管理项目十二-在ASP中使用数据库多课件_第2页
网站建设与管理项目十二-在ASP中使用数据库多课件_第3页
网站建设与管理项目十二-在ASP中使用数据库多课件_第4页
网站建设与管理项目十二-在ASP中使用数据库多课件_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目十二

在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子句中,使用INNERJOIN…ON…建立内连接,也可以在WHERE子句中,指定连接条件建立内连接。

这两种都是非常常用的连接查询方法。二、任务分析 查询数据库两张表的记录时,可以在FOR三、知识准备12.1.1内连接查询基础知识

可以在FORM子句中使用INNERJOIN…ON…建立内连接,也可以在WHERE子句中指定连接条件建立内连接,例如:三、知识准备12.1.1内连接查询基础知识<%Conn.Execute("selecta.UserName,b.BookName,b.DatetmfromUserInfoasainnerjoinSellSheetasbona.UserID=b.UserID")%><%Conn.Execute("selecta.User

也可以用下面的语句实现。<%Conn.Execute("selecta.UserName,b.BookName,b.DatetmfromUserInfoasa,SellSheetasbwherea.UserID=b.UserID")%> 也可以用下面的语句实现。

下面在SQL语句FROM后面使用INNERJOIN和ON关键字关联数据表“UserInfo”和“SellSheet”,并根据输入

的用户名称进行查询。 下面在SQL语句FROM后面使用INNERJOI

程序代码如下。<%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%>sqlstr="selecta.UserName,b.Bo12.1.2内连接查询详细语法

使用SQL连接两张表的基本语法是:select*FROMtable1INNERJOINtable2ONtable1.field1compoprtable2.field212.1.2内连接查询详细语法 使用SQL连接两张表的表12-1INNERJOIN的操作内容表12-1INNERJOIN的操作内容

下例代码显示了通过CategoryID字段,连接Categories和Products表的过程。SELECTCategoryName,ProductNameFROMCategoriesINNERJOINProductsONCategories.CategoryID=Products.CategoryID; 下例代码显示了通过CategoryID字段,连接

也可以在JOIN语句中,链接多个ON子句,基本语法如下。SELECTfieldsFROMtable1INNERJOINtable2ONtable1.field1compoprtable2.field1AND 也可以在JOIN语句中,链接多个ON子句,基ONtable1.field2compoprtable2.field2ORONtable1.field3compoprtable2.field3;ONtable1.field2compoprtable

也可以通过如下语法,嵌套JOIN语句,基本语法如下:SELECTfieldsFROMtable1INNERJOIN(table2INNERJOIN[(]table3[INNERJOIN[(]tablex[INNERJOIN...)]

也可以通过如下语法,嵌套JOIN语句,基本语法如ONtable3.field3compoprtablex.fieldx)]ONtable2.field2compoprtable3.field3)

ONtable1.field1compoprtable2.field2;ONtable3.field3compoprtable12.1.3使用UNION进行联合查询

使用UNION运算符遵循的规则如下。

(1)在使用UNION运算符组合的语句中,所有选择列表的表达式数目必须相同(列名、算术表达式、聚集函数等)。12.1.3使用UNION进行联合查询 使用UNI

(2)在使用UNION组合的结果集中的相应列,必须具有相同数据类型,或者两种数据类型之间,必须存在可能的隐性数据转换,或者提供了显式转换。

(3)结果集中列的名字或者别名,是由第一个SELECT语句的选择列表决定。

(2)在使用UNION组合的结果集中的相应列,必须具有相同程序代码如下。<%IfTrim(Request("txt_name"))<>""Thentxt_name=Trim(Request("txt_name"))Setrs=Server.CreateObject("ADODB.Recordset")程序代码如下。sqlstr="selectUserID,UserNamefromUserInfowhereUserName='"&txt_name&"'unionselectUserID,BookNamefromSellSheetwhereUserName='"&txt_name&"'"rs.opensqlstr,Conn,1,1%>sqlstr="selectUserID,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输入代码<%dimconnSetconn=Server.CreateObject("ADODB.connection")步骤3输入代码sql="Driver={MicrosoftAccessDriver(*.mdb)};DBQ="&Server.MapPath("database/db_database.mdb")conn.open(sql)sql="Driver={MicrosoftAccess%><%setrs=Server.createobject("ADODB.Recordset") sqlstr="select*fromainnerjoinbona.aid=b.bid" rs.opensqlstr,conn

whilenotrs.eof%> %>

两表ID相同的字段为<br><%=rs("aid")%><%=rs("adate")%><%=rs("bdate")%><% rs.movenext wend %>rs.closeconn.closesetconn=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使用外连接查询记录二、任务分析

外连接是对内连接的扩充,除了将两个数据集合中重叠部分以内的数据行连接起来之外,还可以根据要求返回左侧或右侧数据集合中非匹配的数据,即左外连接(LEFTOUTERJOIN)和右外连接(RIGHTOUTERJOIN)。二、任务分析 外连接是对内连接的扩充,除了将两个数据集三、知识准备12.2.1左外连接LEFTOUTERJOIN其参考程序代码如下。<%IfTrim(Request("txt_name"))<>""Thentxt_name=Trim(Request("txt_name"))三、知识准备12.2.1左外连接LEFTOUTERJSetrs=Server.CreateObject("ADODB.Recordset")sqlstr="selecta.UserName,b.BookName,b.DatetmfromUserInfoasaleftouterjoinSellSheetasbona.UserID=b.UserIDwherea.UserNamelike'%"&txt_name&"%'"rs.opensqlstr,Conn,1,1%>Setrs=Server.CreateObject("AD12.2.2右外连接RIGHTOUTERJOIN基本的参考程序代码如下。<%IfTrim(Request("txt_name"))<>""Thentxt_name=Trim(Request("txt_name"))12.2.2右外连接RIGHTOUTERJOIN基本Setrs=Server.CreateObject("ADODB.Recordset")sqlstr="selecta.UserName,b.BookName,b.DatetmfromUserInfoasarightouterjoinSellSheetasbona.UserID=b.UserIDwhereb.BookNamelike'%"&txt_name&"%'"rs.opensqlstr,Conn,1,1%>Setrs=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输入代码<%dimconnSetconn=Server.CreateObject("ADODB.connection")sql="Driver={MicrosoftAccessDriver(*.mdb)};DBQ="&Server.MapPath("database/db_database.mdb")步骤3输入代码conn.open(sql)%><%setrs=Server.createobject("ADODB.Recordset") sqlstr="select*fromaleftjoinbona.aid=b.bid"conn.open(sql) rs.opensqlstr,conn

whilenotrs.eof %>

左外连接LEFTOUTERJOIN<br><%=rs("aid")%><%=rs("adate")%><%=rs("bdate")%><% rs.opensqlstr,conn rs.movenext wend rs.closeconn.closesetconn=nothing%> 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.1ASP分布技术代码解析1.连接数据库

基本的参考代码如下所示。三、知识准备12.3.1ASP分布技术代码解析<%Setconn=Server.CreateObject("Adodb.Connection")connstr="PRovider=Microsoft.JET.OLEDB.4.0;DataSource="&Server.MapPath("data.mdb")conn.openconnstr<%Setrs=Server.CreateObject("Adodb.Recordset")sql="Select*frominfo"rs.opensql,conn,1,1%>Setrs=Server.CreateObject("Ad2.创建分页基本参考代码如下。<%rs.pagesize=4curpage=Request.QueryString("curpage")2.创建分页基本参考代码如下。ifcurpage=""thencurpage=1rs.absolutepage=curpage%>ifcurpage=""thencurpage=13.分页记录循环以下为基本参考代码。<%fori=1tors.pagesizeifrs.eofthenexitfor3.分页记录循环以下为基本参考代码。endif%><%=rs("record_info")%><br><%rs.movenextnext%>endif4.分页链接如下代码所示。"当前第<%=curpage%>页,共有<%=rs.pagecount%>页,共有:<%=rs.recordcount%>条记录"以下代码显示了基本的参考内容。<%ifcurpage=1then%>4.分页链接如下代码所示。首页。<%else%><ahref="?curpage=1">首页</a><%endif%><%ifcurpage=1then%>首页。上一页。<%else%><ahref="?curpage=<%=cur1%>">上一页</a><%endif%><%ifrs.pagecount<curpage+1then%>上一页。下一页。<%else%><ahref="?curpage=<%=curpage+1%>">下一页</a><%endif%><%ifrs.pagecount<curpage+1then%>下一页。尾页。<%else%><ahref="?curpage=<%=rs.pagecount%>">尾页</a><%endif%>尾页。12.3.2建立Access数据库1.创建数据库图12-3-2Access数据库软件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新建AdobeDreamweaver页面图12-3-6新建ASP网页四、任务实施步骤1新建AdobeDreamweave

步骤2输入代码<%Setconn=Server.CreateObject("ADODB.Connection")strcon="provider=microsoft.jet.oledb.4.0;datasource="&_步骤2输入代码server.mappath("mdb.mdb")conn.OpenstrconSetrs=Server.CreateObject("ADODB.Recordset")sql="select*fromtableorderbyiddesc"rs.Opensql,conn,1server.mappath("mdb.mdb")page=1'设置变量PAGE=1rs.PageSize=4'每页显示记录数ifNotIsEmpty(Request("Page"))then'如果PAGE已经初始化...Page=CInt(Request("Page"))'接收PAGE并化为数字型赋给PAGE变量ifPage>rs.PageCountthen'如果接收的页数大于总页数page=1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论