




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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)目背景
在程序開發(fā)過程中,不僅需要對(duì)單一數(shù)據(jù)表進(jìn)行查詢,還要進(jìn)行多表查詢,用戶通過多表查詢,從多張表中提取出需要的數(shù)據(jù)。
比如學(xué)生信息與學(xué)生的成績(jī)是兩張不同的數(shù)據(jù)庫(kù)表,但在動(dòng)態(tài)網(wǎng)站開發(fā)過程中,常常要通過學(xué)生的信息去查詢或修改其學(xué)生的成績(jī);又如學(xué)生的成績(jī)與學(xué)科也是不同的數(shù)據(jù)庫(kù)表,也經(jīng)常去查找學(xué)生某一學(xué)科的成績(jī)。
任務(wù)12.1使用內(nèi)連接查詢記錄
任務(wù)12.2使用外連接查詢記錄
任務(wù)12.3使用分頁(yè)技術(shù)技術(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)
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-1內(nèi)連接查詢二、任務(wù)分析
查詢數(shù)據(jù)庫(kù)兩張表的記錄時(shí),可以在FORM子句中,使用INNERJOIN…ON…建立內(nèi)連接,也可以在WHERE子句中,指定連接條件建立內(nèi)連接。
這兩種都是非常常用的連接查詢方法。三、知識(shí)準(zhǔn)備12.1.1內(nèi)連接查詢基礎(chǔ)知識(shí)
可以在FORM子句中使用INNERJOIN…ON…建立內(nèi)連接,也可以在WHERE子句中指定連接條件建立內(nèi)連接,例如:<%Conn.Execute("selecta.UserName,b.BookName,b.DatetmfromUserInfoasainnerjoinSellSheetasbona.UserID=b.UserID")%>
也可以用下面的語句實(shí)現(xiàn)。<%Conn.Execute("selecta.UserName,b.BookName,b.DatetmfromUserInfoasa,SellSheetasbwherea.UserID=b.UserID")%>
下面在SQL語句FROM后面使用INNERJOIN和ON關(guān)鍵字關(guān)聯(lián)數(shù)據(jù)表“UserInfo”和“SellSheet”,并根據(jù)輸入
的用戶名稱進(jìn)行查詢。
程序代碼如下。<%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.2內(nèi)連接查詢?cè)敿?xì)語法
使用SQL連接兩張表的基本語法是:select*FROMtable1INNERJOINtable2ONtable1.field1compoprtable2.field2部
分說
明table1,table2要組合其中的記錄的表的名稱field1,field2要聯(lián)接的字段的名稱。如果它們不是數(shù)字,則這些字段的數(shù)據(jù)類型必須相同,并且包含同類數(shù)據(jù),但是,它們不必具有相同的名稱compopr任何關(guān)系比較運(yùn)算符:“=”、“<”、“>”、“<=”、“>=”或者“<>”表12-1INNERJOIN的操作內(nèi)容
下例代碼顯示了通過CategoryID字段,連接Categories和Products表的過程。SELECTCategoryName,ProductNameFROMCategoriesINNERJOINProductsONCategories.CategoryID=Products.CategoryID;
也可以在JOIN語句中,鏈接多個(gè)ON子句,基本語法如下。SELECTfieldsFROMtable1INNERJOINtable2ONtable1.field1compoprtable2.field1ANDONtable1.field2compoprtable2.field2ORONtable1.field3compoprtable2.field3;
也可以通過如下語法,嵌套JOIN語句,基本語法如下:SELECTfieldsFROMtable1INNERJOIN(table2INNERJOIN[(]table3[INNERJOIN[(]tablex[INNERJOIN...)]
ONtable3.field3compoprtablex.fieldx)]ONtable2.field2compoprtable3.field3)
ONtable1.field1compoprtable2.field2;12.1.3使用UNION進(jìn)行聯(lián)合查詢
使用UNION運(yùn)算符遵循的規(guī)則如下。
(1)在使用UNION運(yùn)算符組合的語句中,所有選擇列表的表達(dá)式數(shù)目必須相同(列名、算術(shù)表達(dá)式、聚集函數(shù)等)。
(2)在使用UNION組合的結(jié)果集中的相應(yīng)列,必須具有相同數(shù)據(jù)類型,或者兩種數(shù)據(jù)類型之間,必須存在可能的隱性數(shù)據(jù)轉(zhuǎn)換,或者提供了顯式轉(zhuǎn)換。
(3)結(jié)果集中列的名字或者別名,是由第一個(gè)SELECT語句的選擇列表決定。
程序代碼如下。<%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%>
注意:對(duì)數(shù)據(jù)表進(jìn)行聯(lián)合查詢時(shí),結(jié)果集中行的最大數(shù)量是各表行數(shù)之“和”,而對(duì)數(shù)據(jù)表進(jìn)行連接查詢時(shí),結(jié)果集中行的最大數(shù)量是各表行數(shù)之“積”。四、任務(wù)實(shí)施
步驟1創(chuàng)建ASP網(wǎng)頁(yè)圖12-1-2新建ASP網(wǎng)頁(yè)
步驟2建立兩個(gè)數(shù)據(jù)庫(kù)表圖12-1-3數(shù)據(jù)庫(kù)表a圖12-1-4數(shù)據(jù)庫(kù)表b
步驟3輸入代碼<%dimconnSetconn=Server.CreateObject("ADODB.connection")sql="Driver={MicrosoftAccessDriver(*.mdb)};DBQ="&Server.MapPath("database/db_database.mdb")conn.open(sql)%><%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 wendrs.closeconn.closesetconn=nothing%>圖12-1-5網(wǎng)頁(yè)代碼
步驟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-1使用外連接查詢記錄二、任務(wù)分析
外連接是對(duì)內(nèi)連接的擴(kuò)充,除了將兩個(gè)數(shù)據(jù)集合中重疊部分以內(nèi)的數(shù)據(jù)行連接起來之外,還可以根據(jù)要求返回左側(cè)或右側(cè)數(shù)據(jù)集合中非匹配的數(shù)據(jù),即左外連接(LEFTOUTERJOIN)和右外連接(RIGHTOUTERJOIN)。三、知識(shí)準(zhǔn)備12.2.1左外連接LEFTOUTERJOIN其參考程序代碼如下。<%IfTrim(Request("txt_name"))<>""Thentxt_name=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"))<>""Thentxt_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%>四、任務(wù)實(shí)施
步驟1創(chuàng)建ASP網(wǎng)頁(yè)圖11-2-2新建ASP網(wǎng)頁(yè)
步驟2建立兩個(gè)數(shù)據(jù)庫(kù)表圖12-2-3數(shù)據(jù)庫(kù)表a圖12-2-4數(shù)據(jù)庫(kù)表b
步驟3輸入代碼<%dimconnSetconn=Server.CreateObject("ADODB.connection")sql="Driver={MicrosoftAccessDriver(*.mdb)};DBQ="&Server.MapPath("database/db_database.mdb")conn.open(sql)%><%setrs=Server.createobject("ADODB.Recordset") sqlstr="select*fromaleftjoinbona.aid=b.bid" rs.opensqlstr,conn
whilenotrs.eof %>
左外連接LEFTOUTERJOIN<br><%=rs("aid")%><%=rs("adate")%><%=rs("bdate")%><% rs.movenext wend rs.closeconn.closesetconn=nothing%>圖12-2-5網(wǎng)頁(yè)代碼
步驟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-1分頁(yè)技術(shù)最終效果二、任務(wù)分析
在動(dòng)態(tài)網(wǎng)頁(yè)讀取數(shù)據(jù)庫(kù)中的記錄時(shí),有些記錄的總數(shù)有可能有上百條、上千條,甚至是上萬條,這對(duì)于一個(gè)頁(yè)面的顯示帶來了很多不方便的地方。
而pagesize這個(gè)屬性,通過相關(guān)的技術(shù)編程,可以實(shí)現(xiàn)記錄的分頁(yè)功能。三、知識(shí)準(zhǔn)備12.3.1ASP分布技術(shù)代碼解析1.連接數(shù)據(jù)庫(kù)
基本的參考代碼如下所示。<%Setconn=Server.CreateObject("Adodb.Connection")connstr="PRovider=Microsoft.JET.OLEDB.4.0;DataSource="&Server.MapPath("data.mdb")conn.openconnstrSetrs=Server.CreateObject("Adodb.Recordset")sql="Select*frominfo"rs.opensql,conn,1,1%>2.創(chuàng)建分頁(yè)基本參考代碼如下。<%rs.pagesize=4curpage=Request.QueryString("curpage")ifcurpage=""thencurpage=1rs.absolutepage=curpage%>3.分頁(yè)記錄循環(huán)以下為基本參考代碼。<%fori=1tors.pagesizeifrs.eofthenexitforendif%><%=rs("record_info")%><br><%rs.movenextnext%>4.分頁(yè)鏈接如下代碼所示。"當(dāng)前第<%=curpage%>頁(yè),共有<%=rs.pagecount%>頁(yè),共有:<%=rs.recordcount%>條記錄"以下代碼顯示了基本的參考內(nèi)容。<%ifcurpage=1then%>首頁(yè)。<%else%><ahref="?curpage=1">首頁(yè)</a><%endif%><%ifcurpage=1then%>上一頁(yè)。<%else%><ahref="?curpage=<%=cur1%>">上一頁(yè)</a><%endif%><%ifrs.pagecount<curpage+1then%>下一頁(yè)。<%else%><ahref="?curpage=<%=curpage+1%>">下一頁(yè)</a><%endif%><%ifrs.pagecount<curpage+1then%>尾頁(yè)。<%else%><ahref="?curpage=<%=rs.pagecount%>">尾頁(yè)</a><%endif%>12.3.2建立Access數(shù)據(jù)庫(kù)1.創(chuàng)建數(shù)據(jù)庫(kù)圖12-3-2Access數(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ù)類型4.輸入數(shù)據(jù)圖12-3-5輸入相應(yīng)數(shù)據(jù)四、任務(wù)實(shí)施
步驟1新建AdobeDreamweaver頁(yè)面圖12-3-6新建ASP網(wǎng)頁(yè)
步驟2輸入代碼<%Setconn=Server.CreateObject("ADODB.Connection")strcon="provider=microsoft.jet.oledb.4.0;datasource="&_server.mappath("mdb.mdb")conn.OpenstrconSetrs=Server.CreateObject("ADODB.Recordset")sql="select*fromtableorderbyiddesc"rs.Opensql,conn,1page=1'設(shè)置變量PAGE=1rs.PageSize=4'每頁(yè)顯示記錄數(shù)ifNotIsEmpty(Request("Page"))then'如果PAGE已經(jīng)初始化...Page=CInt(Request("Page"))'接收PAGE并化為數(shù)字型賦給PAGE變量if
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞務(wù)合同范本廣告
- 個(gè)人委托門面出租合同范本
- 公租房攤位出租合同范本
- 業(yè)主自建翻車裝修合同范本
- 第14課 文藝復(fù)興運(yùn)動(dòng)(教學(xué)設(shè)計(jì))-2024-2025學(xué)年九年級(jí)歷史上冊(cè)素養(yǎng)提升教學(xué)設(shè)計(jì)(統(tǒng)編版)
- 低價(jià)轉(zhuǎn)讓合同范本
- 云溪區(qū)土地流轉(zhuǎn)合同范本
- 買新盤合同范本
- 公司員工兼職合同范本
- 代工工廠保密合同范本
- 2024年湖南食品藥品職業(yè)學(xué)院高職單招語文歷年參考題庫(kù)含答案解析
- 外科護(hù)理5分鐘小講課
- 《船舶油漆作業(yè)》課件
- 2025年中國(guó)融通農(nóng)發(fā)社會(huì)招聘筆試參考題庫(kù)含答案解析
- 2025年天津市寧河區(qū)事業(yè)單位招聘12人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年福建省莆田市數(shù)學(xué)三上期末質(zhì)量檢測(cè)模擬試題含解析
- 2025年山東菏澤投資發(fā)展集團(tuán)限公司招聘61人管理單位筆試遴選500模擬題附帶答案詳解
- 全國(guó)扶貧開發(fā)信息系統(tǒng)業(yè)務(wù)管理子系統(tǒng)用戶操作手冊(cè)20241110(升級(jí)版)
- 幕墻工程項(xiàng)目管理手冊(cè)
- 地理中圖版2025新版七年級(jí)下冊(cè) 中圖版七年級(jí)下地理教學(xué)計(jì)劃
- 五下數(shù)學(xué)人教版課件教學(xué)課件教學(xué)課件
評(píng)論
0/150
提交評(píng)論