經(jīng)過前幾節(jié)的學(xué)習(xí),我們對LV類和ASP的輸入輸出應(yīng)該已經(jīng)很熟練了吧,而且我們也已經(jīng)了解了LV與ASP通訊的基本原理。這個(gè)原理可能并不復(fù)雜,不過如果你想利用它做出點(diǎn)東西來,關(guān)鍵還是要看你ASP和FLASH的基本功了。遺憾的是這篇教程主要講述FLASH與ASP通訊原理,更詳細(xì)更高級的ASP和FLASH技巧,我恐怕不能多講,不然這篇教程不知道什么時(shí)候才能寫完,同時(shí)也會失去重點(diǎn)。這節(jié)我將簡單的羅列一些ASP操作ACCESS數(shù)據(jù)庫的基本知識,注意,我只是點(diǎn)到為止,更詳細(xì)的資料和講解網(wǎng)上很多,你可以自己去搜索。
首先我們需要建立一個(gè)ACCESS數(shù)據(jù)庫文件,命名為“shujuku.mdb”,并在其中新建數(shù)據(jù)表,命名為“shujubiao”。數(shù)據(jù)表中字段名稱、字段類型和字段內(nèi)容如下圖所示。示例的數(shù)據(jù)庫可以在最后下載,下載后請保存起來,因?yàn)槲乙院蟮闹v解都會用到它。
然后在數(shù)據(jù)庫同文件夾下建立一個(gè)操作數(shù)據(jù)庫的ASP文件,命名為“caozuo.asp”,并輸入以下代碼:
<%@LANGUAGE="JAVASCRIPT"%> <% //建立一個(gè)數(shù)據(jù)庫鏈接對象 lianjie = Server.CreateObject("ADODB.Connection"); //用已經(jīng)建立的數(shù)據(jù)庫鏈接對象打開數(shù)據(jù)庫 lianjie.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("shujuku.mdb")); //創(chuàng)建一個(gè)“記錄集”,即“Recordset”,它的任務(wù)是儲存從數(shù)據(jù)庫里提取出來的數(shù)據(jù) rs = Server.CreateObject("ADODB.Recordset"); //創(chuàng)建查詢數(shù)據(jù)庫的SQL語句,這里將查出“shujubiao”中的所有數(shù)據(jù) sql="select * from shujubiao"; //執(zhí)行數(shù)據(jù)庫查詢,最后的數(shù)字參數(shù)主要用來指定打開和查詢數(shù)據(jù)庫的方式,有興趣可以百度一下 rs.Open(sql, lianjie, 3); %>
說明:上面的代碼,除了SQL語句外,每個(gè)ASP文件差不多都是類似的,主要用來初始和查詢數(shù)據(jù)。數(shù)據(jù)是提出來了,但如果你想要按自己方式使用它們,還是要借助JS腳本來實(shí)現(xiàn)。另外這里要著重說一下SQL,SQL是專門用來查詢數(shù)據(jù)庫的語言,它可以按指定的規(guī)則查詢數(shù)據(jù)庫中指定的表和字段,功能強(qiáng)大,卻又非常容易理解,基本可以從字面意思猜出其功能來,這一節(jié)的最后我會仔細(xì)講一下常用的SQL語句。
現(xiàn)在先回到我們的ASP中,繼續(xù)在“caozuo.asp”中追加以下代碼:
<% //當(dāng)前顯示的頁數(shù),這里設(shè)置為第一頁 var dangqianye=1; //每頁顯示的記錄條數(shù),這里設(shè)置為5條 var meiyejilu=5; //獲取記錄總條數(shù) var zongtiaoshu=rs.RecordCount; //設(shè)置每頁顯示的記錄條數(shù) rs.PageSize=meiyejilu; //設(shè)置當(dāng)前顯示的頁碼 rs.AbsolutePage=dangqianye; //獲取總頁數(shù) var zongyeshu=rs.PageCount; //輸出總頁數(shù)、總條數(shù)、每頁記錄條數(shù)以及當(dāng)前頁碼 Response.Write("總條數(shù)為:"+zongtiaoshu+"<br>總頁數(shù)為:"+zongyeshu+"<br>每頁記錄條數(shù):"+meiyejilu+"<br>當(dāng)前頁:"+dangqianye+"<br>"); %>
說明:先在IIS下運(yùn)行一下,你會看到網(wǎng)頁上顯示:
總條數(shù)為:13 總頁數(shù)為:3 每頁記錄條數(shù):5 當(dāng)前頁:1
有興趣的朋友可以自己修改一下“meiyejilu”的值,然后再運(yùn)行看看它和總頁數(shù)存在什么關(guān)系,相信聰明的你一定能找到其中的規(guī)律:)注意,這里我一直在用“rs”,在第一段舉例的代碼中我已經(jīng)注釋過了,“rs”是“Recordset”對象的一個(gè)實(shí)例,我們從數(shù)據(jù)庫里查詢出來的數(shù)據(jù)都會儲存在這個(gè)實(shí)例中,我們之所以這么做,是因?yàn)椤癛ecordset”對象有很多屬性和方法,方便我們使用,比如這里的“PageSize”和“AbsolutePage”。
光顯示條數(shù)和頁數(shù)沒什么太大意義,我們要的是記錄中的內(nèi)容,好的,現(xiàn)在繼續(xù)追加以下代碼:
<% //聲明一個(gè)變量用來存儲要輸出的內(nèi)容,初始為空 var shuchuneirong=""; //利用循環(huán)顯示一頁的所有內(nèi)容,具體的頁碼在第二段代碼的“rs.AbsolutePage”中指定了 for (i=0;i<meiyejilu;i++){ //if的作用下面再進(jìn)行說明 if(!rs.EOF){ //獲取字段內(nèi)容 var xuhao=rs("xuhao"); var xingming=rs("xingming"); var yuwen=rs("yuwen"); var shuxue=rs("shuxue"); //一次循環(huán)將獲得一條記錄的所有內(nèi)容,然后把這條記錄追加到變量“shuchuneirong”中,這樣循環(huán)結(jié)束的時(shí)候,它將儲存本頁所有的記錄內(nèi)容 shuchuneirong =shuchuneirong+"<br>序號:"+ xuhao +" | 姓名:"+xingming+" | 語文:"+yuwen+" | 數(shù)學(xué):"+shuxue; //本次循環(huán)結(jié)束后,將記錄集指定到下一條記錄 //上面的if判斷將在這里發(fā)揮作用,當(dāng)我們顯示最后一頁的時(shí)候,剩余的記錄數(shù)很可能小于設(shè)定的每頁記錄數(shù) //如果不加判斷,rs就很有可能溢出界限,從而導(dǎo)致錯(cuò)誤 rs.MoveNext(); } } //在網(wǎng)頁中按指定格式輸出本頁所有的記錄內(nèi)容 Response.Write(shuchuneirong); //關(guān)閉記錄集對象 rs.Close(); //關(guān)閉連接對象 lianjie.Close(); %>
說明:啥都不說了,保存并運(yùn)行吧,我們會在網(wǎng)頁中看到下面的輸出內(nèi)容:
總條數(shù)為:13 總頁數(shù)為:3 每頁記錄條數(shù):5 當(dāng)前頁:1
序號:1 | 姓名:周星馳 | 語文:50 | 數(shù)學(xué):72 序號:2 | 姓名:丘淑貞 | 語文:450 | 數(shù)學(xué):100 序號:3 | 姓名:舒淇 | 語文:1000 | 數(shù)學(xué):2000 序號:4 | 姓名:劉德華 | 語文:200 | 數(shù)學(xué):1000 序號:5 | 姓名:小布什 | 語文:500 | 數(shù)學(xué):501
然后我們可以修改一下“dangqianye”,只要“當(dāng)前頁”小于等于“總頁數(shù)”,就能正確顯示本頁的內(nèi)容。其實(shí)現(xiàn)在很多FLASH留言本中的分頁就是用的這一原理,只不過到時(shí)候我們不可能像現(xiàn)在這樣手動(dòng)修改“AbsolutePage”的值,我們需要從FLASH傳遞頁碼值,然后在ASP中接收并賦值給“AbsolutePage”。哈哈!現(xiàn)在你是不是有點(diǎn)躍躍欲試了?先別急,因?yàn)槲疫有一招入室絕學(xué)沒傳你呢,這套絕學(xué)就是那威震武林的SQL。
說練就練,但為了激發(fā)同學(xué)們學(xué)習(xí)的主動(dòng)性,下面我僅給出做一個(gè)簡易留言本必備的SQL語句:
1,查詢語句 語法:select 字段名 from 數(shù)據(jù)表名 where 查詢條件 order by 排列方式 (不加desc從低到高排序,加上相反) 舉例:僅查詢“shujubiao”表中“xuhao”,“xingming”兩個(gè)字段,并且“xuhao”要大于3,結(jié)果按“xuhao”倒序排列: SQL語句:select xuhao,xingming from shujubiao where xuhao>3 order by xuhao desc
2,刪除記錄 語法:delete from 數(shù)據(jù)表 where 條件 舉例:刪除“xingming”為“小布什”的記錄: SQL語句:delete from shujubiao where xingming='小布什'
3,添加記錄 語法:insert into 數(shù)據(jù)表 (字段名) values (字段值) 舉例:插入一條新記錄,“xingming”為“火山”,“yuwen”為“100”,“shuxue”是“1000”: SQL語句:insert into shujubiao (xingming, yuwen, shuxue) values ('火山',100,1000) 說明:“xuhao”字段為“自動(dòng)編號類型”,不需要賦值。
4,更新記錄 語法:update 數(shù)據(jù)表 set 字段值=新值 where 條件 舉例:把“xuhao”為“1”的記錄中“xingming”字段改為“寂寞火山”,“yuwen”字段改為“200” SQL語句:update shujubiao set xingming='寂寞火山',yuwen=200 where xuhao=1
有了以上四大護(hù)法,打敗FLASH留言板足夠了,建議大家親自動(dòng)手把我寫的例句放在“caozuo.asp”中實(shí)驗(yàn)一下,直觀的體驗(yàn)一下效果。測試時(shí),刷新頁面后你可能會看到頁面報(bào)錯(cuò),沒有關(guān)系,這并不影響SQL的執(zhí)行,這時(shí)你可以關(guān)閉數(shù)據(jù)表再打開就可以直接在數(shù)據(jù)庫中會看到效果了。只有第一個(gè)例子必須改動(dòng)一下ASP代碼,需要改那里才能使頁面正常顯示呢?嘿嘿,這個(gè)當(dāng)大家的小作業(yè)了,注意看頁面的錯(cuò)誤提示哦:)
下星期就要生產(chǎn)實(shí)習(xí)了,一下就是三個(gè)星期,一定要趕在實(shí)習(xí)前完工,呼呼~~ 其實(shí)講到這里,你完全應(yīng)該可以按著“LV與ASP通訊原理”一節(jié)中講的方法,自己想辦法把這節(jié)中在網(wǎng)頁里顯示的內(nèi)容傳遞到FLASH里顯示了,善于學(xué)習(xí)的朋友不妨自己先動(dòng)手試一下,看能做到什么程度:)
ASP操作數(shù)據(jù)庫入門實(shí)例:demo02.rar
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁 LV與ASP通訊原理 下一頁 LV與ASP綜合運(yùn)用之一
◎進(jìn)入論壇Flash專欄版塊參加討論
|