網(wǎng)站建設(shè)與管理項(xiàng)目十二-在ASP中使用數(shù)據(jù)庫(kù)多課件_第1頁(yè)
網(wǎng)站建設(shè)與管理項(xiàng)目十二-在ASP中使用數(shù)據(jù)庫(kù)多課件_第2頁(yè)
網(wǎng)站建設(shè)與管理項(xiàng)目十二-在ASP中使用數(shù)據(jù)庫(kù)多課件_第3頁(yè)
網(wǎng)站建設(shè)與管理項(xiàng)目十二-在ASP中使用數(shù)據(jù)庫(kù)多課件_第4頁(yè)
網(wǎng)站建設(shè)與管理項(xiàng)目十二-在ASP中使用數(shù)據(jù)庫(kù)多課件_第5頁(yè)
已閱讀5頁(yè),還剩76頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

項(xiàng)目十二

在ASP中使用數(shù)據(jù)庫(kù)多表操作項(xiàng)目背景

在程序開(kāi)發(fā)過(guò)程中,不僅需要對(duì)單一數(shù)據(jù)表進(jìn)行查詢,還要進(jìn)行多表查詢,用戶通過(guò)多表查詢,從多張表中提取出需要的數(shù)據(jù)。

項(xiàng)目十二在ASP中使用數(shù)據(jù)庫(kù)多表操作項(xiàng)目背景

比如學(xué)生信息與學(xué)生的成績(jī)是兩張不同的數(shù)據(jù)庫(kù)表,但在動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)過(guò)程中,常常要通過(guò)學(xué)生的信息去查詢或修改其學(xué)生的成績(jī);又如學(xué)生的成績(jī)與學(xué)科也是不同的數(shù)據(jù)庫(kù)表,也經(jīng)常去查找學(xué)生某一學(xué)科的成績(jī)。

比如學(xué)生信息與學(xué)生的成績(jī)是兩張不同的數(shù)據(jù)庫(kù)表,但在動(dòng)

任務(wù)12.1使用內(nèi)連接查詢記錄

任務(wù)12.2使用外連接查詢記錄

任務(wù)12.3使用分頁(yè)技術(shù)任務(wù)12.1使用內(nèi)連接查詢記錄技術(shù)導(dǎo)讀本項(xiàng)目技術(shù)重點(diǎn):●會(huì)使用內(nèi)連接查詢數(shù)據(jù)庫(kù)表●會(huì)使用外連接查詢數(shù)據(jù)庫(kù)表●會(huì)使用分頁(yè)技術(shù)●了解什么是Web編程,理解B/S和C/S編程模式的優(yōu)缺點(diǎn)

技術(shù)導(dǎo)讀12.1任務(wù)一使用內(nèi)連接查詢記錄一、任務(wù)描述

兩表之間的內(nèi)連接查詢記錄,可以實(shí)現(xiàn)兩張不同表之間的關(guān)聯(lián),在顯示的效果中,可以用一條記錄查看兩張表中內(nèi)容,內(nèi)連接查詢可以輕松達(dá)到這樣的效果,如圖12-1-1所示。12.1任務(wù)一使用內(nèi)連接查詢記錄一、任務(wù)描述圖12-1-1內(nèi)連接查詢圖12-1-1內(nèi)連接查詢二、任務(wù)分析

查詢數(shù)據(jù)庫(kù)兩張表的記錄時(shí),可以在FORM子句中,使用INNERJOIN…ON…建立內(nèi)連接,也可以在WHERE子句中,指定連接條件建立內(nèi)連接。

這兩種都是非常常用的連接查詢方法。二、任務(wù)分析 查詢數(shù)據(jù)庫(kù)兩張表的記錄時(shí),可以在FOR三、知識(shí)準(zhǔn)備12.1.1內(nèi)連接查詢基礎(chǔ)知識(shí)

可以在FORM子句中使用INNERJOIN…ON…建立內(nèi)連接,也可以在WHERE子句中指定連接條件建立內(nèi)連接,例如:三、知識(shí)準(zhǔn)備12.1.1內(nèi)連接查詢基礎(chǔ)知識(shí)<%Conn.Execute("selecta.UserName,b.BookName,b.DatetmfromUserInfoasainnerjoinSellSheetasbona.UserID=b.UserID")%><%Conn.Execute("selecta.User

也可以用下面的語(yǔ)句實(shí)現(xiàn)。<%Conn.Execute("selecta.UserName,b.BookName,b.DatetmfromUserInfoasa,SellSheetasbwherea.UserID=b.UserID")%> 也可以用下面的語(yǔ)句實(shí)現(xiàn)。

下面在SQL語(yǔ)句FROM后面使用INNERJOIN和ON關(guān)鍵字關(guān)聯(lián)數(shù)據(jù)表“UserInfo”和“SellSheet”,并根據(jù)輸入

的用戶名稱進(jìn)行查詢。 下面在SQL語(yǔ)句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內(nèi)連接查詢?cè)敿?xì)語(yǔ)法

使用SQL連接兩張表的基本語(yǔ)法是:select*FROMtable1INNERJOINtable2ONtable1.field1compoprtable2.field212.1.2內(nèi)連接查詢?cè)敿?xì)語(yǔ)法 使用SQL連接兩張表的表12-1INNERJOIN的操作內(nèi)容表12-1INNERJOIN的操作內(nèi)容

下例代碼顯示了通過(guò)CategoryID字段,連接Categories和Products表的過(guò)程。SELECTCategoryName,ProductNameFROMCategoriesINNERJOINProductsONCategories.CategoryID=Products.CategoryID; 下例代碼顯示了通過(guò)CategoryID字段,連接

也可以在JOIN語(yǔ)句中,鏈接多個(gè)ON子句,基本語(yǔ)法如下。SELECTfieldsFROMtable1INNERJOINtable2ONtable1.field1compoprtable2.field1AND 也可以在JOIN語(yǔ)句中,鏈接多個(gè)ON子句,基ONtable1.field2compoprtable2.field2ORONtable1.field3compoprtable2.field3;ONtable1.field2compoprtable

也可以通過(guò)如下語(yǔ)法,嵌套JOIN語(yǔ)句,基本語(yǔ)法如下:SELECTfieldsFROMtable1INNERJOIN(table2INNERJOIN[(]table3[INNERJOIN[(]tablex[INNERJOIN...)]

也可以通過(guò)如下語(yǔ)法,嵌套JOIN語(yǔ)句,基本語(yǔ)法如ONtable3.field3compoprtablex.fieldx)]ONtable2.field2compoprtable3.field3)

ONtable1.field1compoprtable2.field2;ONtable3.field3compoprtable12.1.3使用UNION進(jìn)行聯(lián)合查詢

使用UNION運(yùn)算符遵循的規(guī)則如下。

(1)在使用UNION運(yùn)算符組合的語(yǔ)句中,所有選擇列表的表達(dá)式數(shù)目必須相同(列名、算術(shù)表達(dá)式、聚集函數(shù)等)。12.1.3使用UNION進(jìn)行聯(lián)合查詢 使用UNI

(2)在使用UNION組合的結(jié)果集中的相應(yīng)列,必須具有相同數(shù)據(jù)類型,或者兩種數(shù)據(jù)類型之間,必須存在可能的隱性數(shù)據(jù)轉(zhuǎn)換,或者提供了顯式轉(zhuǎn)換。

(3)結(jié)果集中列的名字或者別名,是由第一個(gè)SELECT語(yǔ)句的選擇列表決定。

(2)在使用UNION組合的結(jié)果集中的相應(yīng)列,必須具有相同程序代碼如下。<%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

注意:對(duì)數(shù)據(jù)表進(jìn)行聯(lián)合查詢時(shí),結(jié)果集中行的最大數(shù)量是各表行數(shù)之“和”,而對(duì)數(shù)據(jù)表進(jìn)行連接查詢時(shí),結(jié)果集中行的最大數(shù)量是各表行數(shù)之“積”。 注意:對(duì)數(shù)據(jù)表進(jìn)行聯(lián)合查詢時(shí),結(jié)果集中行的最大數(shù)量是四、任務(wù)實(shí)施

步驟1創(chuàng)建ASP網(wǎng)頁(yè)圖12-1-2新建ASP網(wǎng)頁(yè)四、任務(wù)實(shí)施步驟1創(chuàng)建ASP網(wǎng)頁(yè)圖12-1-2新

步驟2建立兩個(gè)數(shù)據(jù)庫(kù)表圖12-1-3數(shù)據(jù)庫(kù)表a步驟2建立兩個(gè)數(shù)據(jù)庫(kù)表圖12-1-3數(shù)據(jù)庫(kù)表a圖12-1-4數(shù)據(jù)庫(kù)表b圖12-1-4數(shù)據(jù)庫(kù)表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網(wǎng)頁(yè)代碼圖12-1-5網(wǎng)頁(yè)代碼

步驟4測(cè)試代碼圖12-1-6運(yùn)行結(jié)果步驟4測(cè)試代碼圖12-1-6運(yùn)行結(jié)果12.2任務(wù)二使用外連接查詢記錄一、任務(wù)描述

使用外連接查詢記錄,也可以實(shí)現(xiàn)要求返回左側(cè)或右側(cè)數(shù)據(jù)集合中非匹配的數(shù)據(jù),此方法多用于兩表或多表間的對(duì)比,測(cè)試效果圖如圖12-2-1所示。12.2任務(wù)二使用外連接查詢記錄一、任務(wù)描述圖12-2-1使用外連接查詢記錄圖12-2-1使用外連接查詢記錄二、任務(wù)分析

外連接是對(duì)內(nèi)連接的擴(kuò)充,除了將兩個(gè)數(shù)據(jù)集合中重疊部分以內(nèi)的數(shù)據(jù)行連接起來(lái)之外,還可以根據(jù)要求返回左側(cè)或右側(cè)數(shù)據(jù)集合中非匹配的數(shù)據(jù),即左外連接(LEFTOUTERJOIN)和右外連接(RIGHTOUTERJOIN)。二、任務(wù)分析 外連接是對(duì)內(nèi)連接的擴(kuò)充,除了將兩個(gè)數(shù)據(jù)集三、知識(shí)準(zhǔn)備12.2.1左外連接LEFTOUTERJOIN其參考程序代碼如下。<%IfTrim(Request("txt_name"))<>""Thentxt_name=Trim(Request("txt_name"))三、知識(shí)準(zhǔn)備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四、任務(wù)實(shí)施

步驟1創(chuàng)建ASP網(wǎng)頁(yè)圖11-2-2新建ASP網(wǎng)頁(yè)四、任務(wù)實(shí)施步驟1創(chuàng)建ASP網(wǎng)頁(yè)圖11-2-2新建

步驟2建立兩個(gè)數(shù)據(jù)庫(kù)表圖12-2-3數(shù)據(jù)庫(kù)表a步驟2建立兩個(gè)數(shù)據(jù)庫(kù)表圖12-2-3數(shù)據(jù)庫(kù)表a圖12-2-4數(shù)據(jù)庫(kù)表b圖12-2-4數(shù)據(jù)庫(kù)表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網(wǎng)頁(yè)代碼圖12-2-5網(wǎng)頁(yè)代碼

步驟4測(cè)試代碼圖11-2-6運(yùn)行結(jié)果步驟4測(cè)試代碼圖11-2-6運(yùn)行結(jié)果12.3任務(wù)三使用分頁(yè)技術(shù)一、任務(wù)描述 ASP使用分頁(yè)技術(shù)的作用,顯示指定行記錄,在記錄集較多的時(shí)候,一般都會(huì)用到分頁(yè)技術(shù),特別是在大型的網(wǎng)站上面,尤為常用,分頁(yè)技術(shù)的顯示效果如圖12-3-1所示。12.3任務(wù)三使用分頁(yè)技術(shù)一、任務(wù)描述圖12-3-1分頁(yè)技術(shù)最終效果圖12-3-1分頁(yè)技術(shù)最終效果二、任務(wù)分析

在動(dòng)態(tài)網(wǎng)頁(yè)讀取數(shù)據(jù)庫(kù)中的記錄時(shí),有些記錄的總數(shù)有可能有上百條、上千條,甚至是上萬(wàn)條,這對(duì)于一個(gè)頁(yè)面的顯示帶來(lái)了很多不方便的地方。

而pagesize這個(gè)屬性,通過(guò)相關(guān)的技術(shù)編程,可以實(shí)現(xiàn)記錄的分頁(yè)功能。二、任務(wù)分析 在動(dòng)態(tài)網(wǎng)頁(yè)讀取數(shù)據(jù)庫(kù)中的記錄時(shí),有些記錄三、知識(shí)準(zhǔn)備12.3.1ASP分布技術(shù)代碼解析1.連接數(shù)據(jù)庫(kù)

基本的參考代碼如下所示。三、知識(shí)準(zhǔn)備12.3.1ASP分布技術(shù)代碼解析<%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.創(chuàng)建分頁(yè)基本參考代碼如下。<%rs.pagesize=4curpage=Request.QueryString("curpage")2.創(chuàng)建分頁(yè)基本參考代碼如下。ifcurpage=""thencurpage=1rs.absolutepage=curpage%>ifcurpage=""thencurpage=13.分頁(yè)記錄循環(huán)以下為基本參考代碼。<%fori=1tors.pagesizeifrs.eofthenexitfor3.分頁(yè)記錄循環(huán)以下為基本參考代碼。endif%><%=rs("record_info")%><br><%rs.movenextnext%>endif4.分頁(yè)鏈接如下代碼所示。"當(dāng)前第<%=curpage%>頁(yè),共有<%=rs.pagecount%>頁(yè),共有:<%=rs.recordcount%>條記錄"以下代碼顯示了基本的參考內(nèi)容。<%ifcurpage=1then%>4.分頁(yè)鏈接如下代碼所示。首頁(yè)。<%else%><ahref="?curpage=1">首頁(yè)</a><%endif%><%ifcurpage=1then%>首頁(yè)。上一頁(yè)。<%else%><ahref="?curpage=<%=cur1%>">上一頁(yè)</a><%endif%><%ifrs.pagecount<curpage+1then%>上一頁(yè)。下一頁(yè)。<%else%><ahref="?curpage=<%=curpage+1%>">下一頁(yè)</a><%endif%><%ifrs.pagecount<curpage+1then%>下一頁(yè)。尾頁(yè)。<%else%><ahref="?curpage=<%=rs.pagecount%>">尾頁(yè)</a><%endif%>尾頁(yè)。12.3.2建立Access數(shù)據(jù)庫(kù)1.創(chuàng)建數(shù)據(jù)庫(kù)圖12-3-2Access數(shù)據(jù)庫(kù)軟件12.3.2建立Access數(shù)據(jù)庫(kù)1.創(chuàng)建數(shù)據(jù)庫(kù)圖12-2.保存名稱圖12-3-3保存數(shù)據(jù)庫(kù)表2.保存名稱圖12-3-3保存數(shù)據(jù)庫(kù)表3.設(shè)計(jì)字段名稱和數(shù)據(jù)類型圖12-3-4數(shù)據(jù)庫(kù)表設(shè)計(jì)字段和數(shù)據(jù)類型3.設(shè)計(jì)字段名稱和數(shù)據(jù)類型圖12-3-4數(shù)據(jù)庫(kù)表設(shè)計(jì)字段4.輸入數(shù)據(jù)圖12-3-5輸入相應(yīng)數(shù)據(jù)4.輸入數(shù)據(jù)圖12-3-5輸入相應(yīng)數(shù)據(jù)四、任務(wù)實(shí)施

步驟1新建AdobeDreamweaver頁(yè)面圖12-3-6新建ASP網(wǎng)頁(yè)四、任務(wù)實(shí)施步驟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'設(shè)置變量PAGE=1rs.PageSize=4'每頁(yè)顯示記錄數(shù)ifNotIsEmpty(Request("Page"))then'如果PAGE已經(jīng)初始化...Page=CInt(Request("Page"))'接收PAGE并化為數(shù)字型賦給PAGE變量ifPage>rs.PageCountthen'如果接收的頁(yè)數(shù)大于總頁(yè)數(shù)page=1

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論