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

下載本文檔

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

文檔簡介

項目十二

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

的用戶名稱進行查詢。 下面在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內(nèi)連接查詢詳細語法

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

下例代碼顯示了通過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進行聯(lián)合查詢

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

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

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

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

(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

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

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

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

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

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

外連接是對內(nèi)連接的擴充,除了將兩個數(shù)據(jù)集合中重疊部分以內(nèi)的數(shù)據(jù)行連接起來之外,還可以根據(jù)要求返回左側(cè)或右側(cè)數(shù)據(jù)集合中非匹配的數(shù)據(jù),即左外連接(LEFTOUTERJOIN)和右外連接(RIGHTOUTERJOIN)。二、任務(wù)分析 外連接是對內(nèi)連接的擴充,除了將兩個數(shù)據(jù)集三、知識準備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四、任務(wù)實施

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論