MFC編程基礎(chǔ)課件_第1頁(yè)
MFC編程基礎(chǔ)課件_第2頁(yè)
MFC編程基礎(chǔ)課件_第3頁(yè)
MFC編程基礎(chǔ)課件_第4頁(yè)
MFC編程基礎(chǔ)課件_第5頁(yè)
已閱讀5頁(yè),還剩31頁(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)介

第八章ASP數(shù)據(jù)訪問(wèn)

本章提要:木章介紹數(shù)據(jù)訪問(wèn)的基本概念,并以Access數(shù)據(jù)庫(kù)為例,詳細(xì)介紹ASP

的數(shù)據(jù)庫(kù)連接,記錄的寫入、查詢、刪除、修改等操作,通過(guò)實(shí)例介紹如果在頁(yè)面上進(jìn)行

記錄的顯示和分頁(yè)等技術(shù)。

8.1表單數(shù)據(jù)傳送

通過(guò)表單元素向服務(wù)器傳送變量,然后將變量值顯示在客戶端的瀏覽器,是一項(xiàng)很平

常而重要的工作。

8.1.1表單元素

表單元素就如VisualBasic之中的控件一樣。在Dreamweaver2004中,提供了這些

元素的具體形式。而表單域作為互動(dòng)性的一種高級(jí)類型,它將表單元素結(jié)合在一起,讓用

戶可以通過(guò)瀏覽器,將數(shù)據(jù)傳送到服務(wù)器上的其他AS〉應(yīng)用程序。

所有的通用表單元素(如單選按鈕、下拉列表、復(fù)選框等)都可以根據(jù)網(wǎng)站的整體構(gòu)

思添加到頁(yè)面之上,以完成網(wǎng)頁(yè)的制作。

下面的圖8.1給出了Dreamweaver2004中的表單元素,它們包括文本字段、隱藏域、

文本域、復(fù)選、單選、單選組、列表菜單、跳轉(zhuǎn)菜單、圖像域、文件域、按鈕、標(biāo)簽、字

段集等。

KacroaediaDrea>veaverIX2004-[無(wú)標(biāo)題文檔(Untitled-1)]

文件國(guó))編輯口查看9插入9修改也文本①命令?站點(diǎn)6)窗口世)幫助國(guó))

表單▼(□□由卬回回回囿囪|畫畫口畫:亡!

Untitled-l////////j

他ii?代|.烏向設(shè)yj檢準(zhǔn)呼電//匚1一]儂:叫\(zhòng)印\(\上

I\\\

表/單文本/字段隱藏/域文i/域復(fù)l選單l選單!選綱列表菜/單.跳轉(zhuǎn)\余整圖像域文件域按%標(biāo)簽?段集

圖8.1DreamweaverMX2004設(shè)計(jì)視圖中的表單元素

也可以通過(guò)插入菜單,來(lái)插入這些表單元素。圖8.2給出了通過(guò)插入菜單插入表單元

素的列表。

圖8.2DreamweaverMX2004設(shè)計(jì)視圖下插入菜單中的表單元素

8.1.2建立表單域

表單元素放在一個(gè)表單域里面,建立一個(gè)表單域,然后修改動(dòng)作里面的文件為要接受

這個(gè)表單變量的ASP文件。方法有兩種,--種是post,這個(gè)方法傳送的變量不會(huì)在瀏覽器

的地址欄里面顯示,可以大批量傳送數(shù)據(jù);另一種是get,則是會(huì)在瀏覽器地址欄里面顯

示的。

下面我們通過(guò)一個(gè)文本表單元素來(lái)說(shuō)明建立表單域的方法。

文本域是最基本的表單元素,它傳送的是文本信息。一般用戶名、密碼等都要用這個(gè)

元素傳送,只不過(guò)如果是密碼的話,要在類型里面選擇密碼類型,這樣就會(huì)以*代替顯

示出來(lái)的密碼字符。文本域的名字很重要,以后會(huì)用到這個(gè)名字所以一般不用默認(rèn)的名字。

示例:

?建立一個(gè)提交表單aspOlf.asp文件。圖8.3為代碼,圖8.4為顯示效果。

taspOlf.asp-記事本13回區(qū))

文件9編輯②格式Q)查看9幫助國(guó))

<formname=''fornd?'method=''post''action="aspG1.asp''>

用戶:<inputtype='*text"name=',user,,Xbr><br>

密碼:<inputtype=?,password,,name=,,pass,,>

<br><br>

性別:<inputtype="radio"nane=",sex"ualue="男?,男

<inputtype=,,radioi,narne=,,sex"ualu11'女,,>女

<br><br>

城市:<selectnane=,,city">

<optionualue="長(zhǎng)沙"selected)長(zhǎng)沙〈/option)

<optionualue="就雙”>武漢</option>

<optionualue="關(guān)酬鄭州〈/optionX/selectXbrX"〉

<inputtype=*'subinit"nane="subnit1*'ualue=,■確定”>

<inputtype=,,reset,inane=*,submit2"ualue=''成消"Xbr》

</forn>

圖8.3提交表單aspOlf.asp

圖&4提交表單aspOlf.asp的顯示效果

這個(gè)表單開(kāi)始的一行:<formname="forml"method="post"action="aspOl.asp">,

指定了表單提交的模式為post方式以及向誰(shuí)(aspOLasp)提交。

這個(gè)表單中有兩個(gè)用于數(shù)據(jù)輸入的文本框:用戶和密碼。注意密碼框的type屬性是

password,那么在密碼輸入時(shí),為安全起見(jiàn),將不會(huì)顯示其值,而用*號(hào)代替。另有兩

個(gè)單選按鈕,用于選擇性別。還有一個(gè)選項(xiàng)列表,用于選擇城市。最后兩個(gè)按鈕,一個(gè)用

于確定提交,一個(gè)用于取消重置,請(qǐng)分別注意它們的type屬性為submit和reset。

?建立一個(gè)接收提交信息并顯示的頁(yè)面aspOl.asp。圖8.5為代碼。

taspOl.asp-記事本□0?

文件9端輯幽)格式Q)查看9幫助國(guó))

<%

user=request?for''user'')

pass=request.formCpass*,)

sex=request.FormC'sex'')

city=request.form("city")

response.writeuserft***,

response.writepass&>a”

response.write

response.writecity

%>

圖8.5接收并顯示提交信息頁(yè)面aspOl.asp

由于前面是用的post方法,那么在aspOl.asp里叫就可以用這樣的語(yǔ)句來(lái)得到變

fi:<%user=request,form(〃user〃)%>。如果要顯示變量則用:<%response,write

user%>o而如果方法用的是get方法,那么就改為<%

name=request.querystring("user")%>。實(shí)際上,兩者可以統(tǒng)一為name二request(〃name〃)。

?運(yùn)行。

下面是運(yùn)行時(shí)的狀態(tài)。圖8.6首先執(zhí)行asp()lf.asp,填入數(shù)據(jù)后,按確定提交,得到

圖8.7的顯木結(jié)果。

圖8.6執(zhí)行提交表單并填入信息

?http://localhost/yunlun/w>root/test/aspOl.asp二回區(qū))

文件9編輯?查看9收藏?工具①幫助?

地址也)▼葡http://Iocalhost/yunlun/wwwroot/test/aspO1.asp

張三123456女武漢

為完畢■a本地Intranet

圖8.7接收顯示結(jié)果

8.2數(shù)據(jù)庫(kù)的建立

為了進(jìn)行數(shù)據(jù)的訪問(wèn),首先要建立數(shù)據(jù)庫(kù),本節(jié)以Access2003為例,建立一個(gè)名為

exasp.mdb的數(shù)據(jù)庫(kù),并建立一個(gè)users數(shù)據(jù)表,以備本章示例之用。有關(guān)其他類型的數(shù)

據(jù)庫(kù),我們?cè)诤竺鎸⒔o出一個(gè)總結(jié)說(shuō)明,而更多的數(shù)據(jù)庫(kù)知識(shí),請(qǐng)參閱相關(guān)資料。下面通

過(guò)圖示,快速介紹建立的過(guò)程。

圖8.8Access2003工作界面

圖8.8Access2003新建文件面版

文件新建數(shù)據(jù)庫(kù)

圖8.10exasp.mdb對(duì)象設(shè)計(jì)窗體

users:表

圖8.11在exasp.mdb數(shù)據(jù)庫(kù)新建表users

圖8.12設(shè)置time字段默認(rèn)值

圖8.13輸入幾條初始數(shù)據(jù)庫(kù)而得到的表

8.3數(shù)據(jù)庫(kù)的連接與記錄的讀E

本節(jié)學(xué)習(xí)掌握ASP頁(yè)面的Access數(shù)據(jù)庫(kù)的連接,以及數(shù)據(jù)表記錄的讀取。下面的步

驟是一個(gè)典型的ASP與數(shù)據(jù)庫(kù)連接的過(guò)程:建立連接對(duì)象、設(shè)置數(shù)據(jù)庫(kù)路徑:打開(kāi)數(shù)據(jù)庫(kù)、

設(shè)置記錄對(duì)象、取記錄。在ASP中,用來(lái)存取數(shù)據(jù)庫(kù)的對(duì)象統(tǒng)稱ADO(ActiveDataObjects),

主要含有三種對(duì)象:Connection:數(shù)據(jù)連接對(duì)象,用于打開(kāi)或連接數(shù)據(jù)庫(kù)。Recordset:

記錄集對(duì)象,用于存取數(shù)據(jù)表記錄。Command:命令對(duì)象,用于對(duì)數(shù)據(jù)庫(kù)執(zhí)行查詢命令。

8.3.1數(shù)據(jù)庫(kù)的連接

基于微軟HS的平臺(tái)上,通過(guò)服務(wù)器端運(yùn)行的ASP程序來(lái)訪問(wèn)后臺(tái)數(shù)據(jù)庫(kù),是一種最

常見(jiàn)的模式。而對(duì)于小型的數(shù)據(jù)庫(kù)應(yīng)用需求,微軟的Access數(shù)據(jù)庫(kù),應(yīng)該是與ASP程序

配套使用的首選。由于Access數(shù)據(jù)庫(kù)的ODBC驅(qū)動(dòng)程序支持的SQL指令集,執(zhí)行效率高,

所以Access后臺(tái)數(shù)據(jù)庫(kù)、ASP服務(wù)器端程序、客戶端IE瀏覽器,是一個(gè)精練實(shí)用高效的

組合模式。在這種使用模式中,ASP程序無(wú)疑是最重要的,是溝通客戶端和后臺(tái)數(shù)據(jù)庫(kù)之

間的橋梁。在ASP程序中,通過(guò)VBScript,建立對(duì)Access數(shù)據(jù)庫(kù)的連接,是客戶能夠訪

問(wèn)后臺(tái)數(shù)據(jù)庫(kù)的前提。

連接各數(shù)據(jù)庫(kù)可以使用驅(qū)動(dòng)程序,也可以使用數(shù)據(jù)源,建議大家使用驅(qū)動(dòng)程序,因?yàn)?/p>

使用驅(qū)動(dòng)程序非常方便、簡(jiǎn)單,而使用數(shù)據(jù)源比較麻煩。

請(qǐng)看下面的代碼:

<%

setconn=server.createobject(^adodb.connection")

conn,open"Provider二Microsoft.Jet.OLEDB.4.0;Data

Source="&server.mappath("exasp.mdb〃)

%>

?程序行:setconn=server.createobjectC'adodb.connection^),利用Server對(duì)

象的crcatcobjcct方法,建立一個(gè)ADO對(duì)象集中的connection對(duì)象,即連接對(duì)象。這是

建立數(shù)據(jù)庫(kù)連接的初始步驟。執(zhí)行這行程序后,conn成為一個(gè)連接對(duì)象。

?程序行:conn,open〃Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&

server,mappath("exasp.mdb"),利用連接對(duì)象conn的open方法打開(kāi)一個(gè)指定的數(shù)據(jù)

庫(kù)。其中,服務(wù)器對(duì)象的mappath函數(shù),取得要打開(kāi)數(shù)據(jù)庫(kù)的完整的文件路徑,這其中,

數(shù)據(jù)庫(kù)名是我們需要指定的參數(shù),應(yīng)該用我們要打開(kāi)的數(shù)據(jù)庫(kù)的實(shí)際名稱替代。如果數(shù)據(jù)

庫(kù)名是直接作為常量出現(xiàn),要用引號(hào)將其括起來(lái),并且不能丟掉擴(kuò)展名。

簡(jiǎn)單地說(shuō),上面的代碼就是兩句話,第一句話定義了AD0DB數(shù)據(jù)連接組件conn,第二

句話利用連接組件conn連接到了數(shù)據(jù)庫(kù)exasp.mdbo

再看下面的代碼:

<%

exec=〃select*fromusers”

setrs=server.createobject("adodb.recordset^)

rs.openexec,conn

%>

這三條語(yǔ)句加在前面兩條語(yǔ)句的后面。

?程序行:exec="select*fromusers”。設(shè)置查詢數(shù)據(jù)庫(kù)的命令,它是通過(guò)一個(gè)

SQL查詢語(yǔ)句實(shí)驗(yàn)的。select后面加的是字段,*表示所有字段,from后面再加上表的名

字,我們前面在exasp.mdb數(shù)據(jù)庫(kù)中建立了一個(gè)users表。

?程序行:setrs=server.createobject(''adodb.recordset^)o定義一個(gè)記錄集組

件。今后,可以將通過(guò)執(zhí)行查詢所有搜索到的記錄都放在這個(gè)組件(對(duì)象)中,

?程序行:rs.openexec,conno是打開(kāi)這個(gè)記錄集,exec就是前面定義的查詢命令,

conn就是前面定義的數(shù)據(jù)廢連接組件。這一句的含義可能簡(jiǎn)單理解為:在conn所指定的

數(shù)據(jù)庫(kù)中去,依據(jù)exec的設(shè)定去執(zhí)行查詢,將查詢結(jié)果放在打開(kāi)的rs對(duì)象中。關(guān)于這條

語(yǔ)句的參數(shù)值說(shuō)明如下:

格式:

Recordset.openSource,ActiveConnection,CursorType,LockType,Options

各參數(shù)的含義如下表&1

參數(shù)含義值參數(shù)值含義

SQL查詢、數(shù)據(jù)表

Source

或存儲(chǔ)過(guò)程

打開(kāi)的連接或連

ActiveConnection

接字符串

0只在記錄中向前移動(dòng),速度較快。

可任意移動(dòng),其他用戶修改記錄可見(jiàn),添加記錄不可

1

見(jiàn),刪除記錄字段值不可用。

CursorType游標(biāo)類型

可任意移動(dòng),其他用戶改、添、刪的記錄均可見(jiàn),速

2

度較慢。

3可任意移動(dòng),其他用戶增、刪、改的記錄均不可見(jiàn)。

0記錄為只讀

只要保持Recordset為打開(kāi),其他用戶就無(wú)法編輯該

1

記錄集中的記錄。

LockType并發(fā)控制

2當(dāng)更新recordset中的記錄時(shí),將記錄加鎖

3以批模式時(shí)更新記錄時(shí)加鎖

1SQL語(yǔ)句

2數(shù)據(jù)表名

指定source傳遞

Options

命令的類型

4存儲(chǔ)過(guò)程

8未知類型

表8.1Recordset,open參數(shù)說(shuō)明

8.3.2記錄的讀取

以下語(yǔ)句完成記錄的讀?。?/p>

<tablewidth="100%"border=〃1〃cellspacing=

<%dowhilenotrs.eof%>

<tr>

<tdalign=/,centerA><%=rs("ID")%X/td>

<tdalign=,,center,/X%=rs(,,name,,)%X/td>

<tdalign="center"><爐rs(,,tel,,)%></td>

<tdalign=/,centerA><%=rs(〃city〃)%X/td>

<tdalign="center"><%=rs("time")%X/td>

</tr>

<%

rs.movenext

loop

%>

</table>

在一個(gè)表格中,我們用5列分別顯示了上次建立的表里面的5個(gè)字段,用d。循環(huán),

notrs.eof的意思是條件為沒(méi)有讀到記錄集的最后,rs.movenext的意思是顯示完一條轉(zhuǎn)

到下面一條記錄,<%二國(guó))等價(jià)于覲response.wrile%>用于在html代碼里面插入asp代碼,

主要用于顯示變量。

8.3.3示例

下面的圖示給出了一個(gè)表、一個(gè)查詢顯示數(shù)據(jù)ASP頁(yè)面及其執(zhí)行結(jié)果。注意:通常我

們將數(shù)據(jù)庫(kù)連接語(yǔ)句作為單獨(dú)的ASP文件(如conn,asp),而在具體的數(shù)據(jù)庫(kù)操作頁(yè)面中,

通過(guò)一條語(yǔ)句包含這個(gè)文件即可:<!—^includefile="conn,asp”>。

F

■users:表

IDnametelcitytime

?0張三8898002長(zhǎng)沙35-4-919:53:01

2李四8834990武漢£-4-100:43:18

3王五8787665鄭州35-4-100:44:38

米(自動(dòng)編號(hào))035-4-100:47:05

II

||記錄:叵11口口[>1心米]共有記錄數(shù):3<>

圖8.14已建立的數(shù)據(jù)庫(kù)exasp.mdb中的表users

conn,asp-記事本

文件更)編輯d)格式查看?幫助?

<%

setconn=seruer.createobject(,,adodb.connection,,)

conn.open,,Prouider=Microsoft.Jet.OLEDB.4.0;Data

Source=,,&seruer.mappath(??exasp.ndb**)

%>

圖8.15用戶數(shù)據(jù)庫(kù)連接的conn.asp

Pasp02.asp-記事本13回區(qū)I

文件更)編輯⑥格式查看9幫助國(guó))

<?-ttincludeFile=,,conn.asp"―>

<%

exec=,,select*fromusers"

setrs=seruer.CreateObjectf^adodb.recordset**)

rs.openexec,conn

%>

<tablewidth=,,100%t,border=,,1i,cellspacing=,,1,,>

<%dowhilenotrs.eof%Xtr>

<tdalign=,'center,,XZ=rs("ID'')%></td>

<tdalign=,,center,,><%=rs(*,nane,')%></td>

<tdalign="center"XZ=rs(”tel")*><八d>

<tdalign=',center,'X%=rs(,,city")%></t(l>

<tdalign=",center"><%=rsC,time,,)V</t(l>

</tr><%

rs.rnouenext

loop

%>

圖8.16通過(guò)查詢顯示數(shù)據(jù)頁(yè)面asp02.asp

芻http://localhost/yunlun/wwroot/test/asp02.asp...13回岡

圖8.17asp02.asp的執(zhí)行結(jié)果

8.4記錄的寫入

8.4.1記錄寫入

先建立一個(gè)表單(圖8.18)

,asp03f.asp-記事本匚)叵|國(guó)|

文件國(guó))編輯量)格式Q)查看W)幫助國(guó))

<h3>寫入表單</h3Xhr>

<FormnafneiFornrrmethod=,'posf,action=,,asp03|.asp,,>

name:<inputtype=*,text,inarne=,,nane,,Xbr><br>

tel:<inputtype=,,text,inane=,,tel,,Xbr><br>

city:<inputtype=,,text"nane=,,city,,ualue=',,,Xbr><br>

<inputtype=,,submit"nane""Subiiit"ualue="確定

<inputtype="reset"namesaaSubmit2aaualue=■,取消

</Forn>

圖8.18寫入提交表單

再建立一個(gè)記錄寫入操作ASP頁(yè)面(圖8.19)。

其中包含了conn,asp文件,用以連接到數(shù)據(jù)庫(kù)exasp.mdb。通過(guò)request對(duì)象,得到

提交表單中的值,將其賦給相應(yīng)變量。接著建立一個(gè)SQL杳詢字符串:exec二〃insertinto

users(name,tel,city)values('〃&name&〃',‘〃&city&〃')〃

insertinto后面加的是表的名字users,緊跟其后的括號(hào)里面是需要添加的字段名,

不用添加的字段以及字段內(nèi)容為默認(rèn)值的,可以省略不寫。values后面是傳送過(guò)夾的變量。

以后執(zhí)行查詢時(shí),將這些變量的值添加到記錄的字段中。

請(qǐng)注意:exec是一個(gè)字符串變量,它保存了一個(gè)SQL查詢語(yǔ)句字符串,這個(gè)字符串是

分為如下七節(jié)通過(guò)&操作符連接起來(lái)的。

“insertintoguestbook(name,tel,message)values(177

〃,〃--I〃,〃?人〃,\〃

name,tel,city)

在ASP里面不能嵌雙引號(hào),可以用單引號(hào)代替雙引號(hào),放在雙引號(hào)里面,連接兩個(gè)變

量用+或者&o中間的name、tel、city,就是表單傳來(lái)的變量。對(duì)于name和city,

將用單引號(hào)括起來(lái),表示是字符串。而tel是數(shù)字型變量,所以不需要單引號(hào)括起來(lái)。

如果用表單傳來(lái)的數(shù)據(jù)代替變量名字,并假設(shè)name二〃張三〃,tel=8877666,ciyt二〃

廣州。則上述查詢字符串的實(shí)際結(jié)果為:

“insertintoguestbook(name,tel,message)values('張三',8877666,‘廣州’)〃

接下來(lái)的conn,execute語(yǔ)句,即執(zhí)行上述exec字符串指定的SQL命令。最后通過(guò)

conn,close把打開(kāi)的數(shù)據(jù)廢關(guān)閉,把定義的組件conn設(shè)置為空,并顯示添加成功提示信

息。

Pasp03.asp-記事本

文件任)編輯堡)格式Q)查看W)幫助國(guó))

K,一ttincludefile=*,conn.asp'*―>

<%

name=request?for做''name'')

tel=request.FormCtel*')

city=request.formrcity")

exec=,,insertintousers(name,tel,city)ualues

(?',&name&“*),B

conn.executeexec

conn.close

setconn=nothing

response.write”記錄添加成功,”

%>

圖8.19記錄寫入操作

運(yùn)行。下面的圖8.20、圖8.21、圖8.22,分別通過(guò)asp03f.asp提交數(shù)據(jù),并執(zhí)行寫

入頁(yè)面asp03.asp。最后查看數(shù)據(jù)庫(kù)表的變化。

圖8.20在寫入表單中鍵入信息

r

芻http://localhost/yunlun/wrroot/test/asp03.asp.??匚]

文件?)編輯?)查看9收藏?工具(X)幫助QI)*

地址也)▼ejhttp://Iocalhost/jninlun/wwwroot/1est/asp03.aspV目轉(zhuǎn)到

記錄添加成功!

目完畢本地Intranet

圖8.21按確定后寫入成功提示

圖8.22數(shù)據(jù)表的變化說(shuō)明添加記錄成功

8.4.2另一種記錄寫入方法

下面介紹另一種記錄寫入的方法。下面一系列圖中給出了相應(yīng)的代碼。提交表單和前

面的基本一樣,只不過(guò)提交的頁(yè)面換了一個(gè)示例頁(yè)面aspO3a.asp。

這里主要談?wù)剬懭胗涗涰?yè)面。該頁(yè)面的代碼如下:

<!-#includefile二〃conna.asp”—>

<%

sql=zzselect*fromusers”

rs.opensql,db,1,3

rs.addnew

rs("name")=request.form("name")

rs("tel")二request.form(〃tel〃)

rs("city〃)=request.form(〃city〃)

rs.update

rs.close

setrs=nothing

response,write〃記錄添加成功!〃

%>

上述代碼中主要有幾點(diǎn)不同于前面的第一種方法:

?在conna.asp中,建立了記錄集對(duì)象。而rs.opensql,db,1,3,記錄集對(duì)象rs,

以可寫入方式打開(kāi)了通過(guò)sql查詢得到的數(shù)據(jù)表記錄。

?對(duì)于rs.addnew,先行創(chuàng)建一條空的新記錄。

?然后通過(guò)賦值的方式將提交表單提交的數(shù)據(jù)寫入到記錄集的新記錄之中。

?通過(guò)rs.update更新數(shù)據(jù)庫(kù)表,即實(shí)際寫入。

E'asp03af.asp-記事本國(guó)]回區(qū)]

文件9編輯也)格式Q)查看9幫助兇

<h3>寫入表單</h3Xhr>

<Fornnane=*,form1,'method=''po$t''action=**asp03a.asp'^

name:<inputtype=,,text,*nane=,,nane,,><br><br>

tel:<inputtypeitext"nane=,,tel,,Xbr><br>

city:<inputtype=',text,iname=,,city,,ualue=,,,,Xbr><br>

<inputtypp=,,sublnit,,ualu?—?確定

<inputtype="reset"name=",Subnit2"ualue=''取消"〉

</Forn>

圖8.23向asp03a.asp提交的表單

conna.asp-記事本I3回區(qū)

文件任)編輯起)格式查看W)幫助國(guó))

<%

setdb=Seruer.CreateObject("ADODB.Connection")

db.open,,DBQ="&seruer.nappath("exasp.ndb*')&";driuer=

<microsoftaccessdriuer(*.ndb)}**

setrs=Seruer.CreateObject("ADODB.Recordset*')

%>

圖8.24數(shù)據(jù)庫(kù)連接與記錄集的定義

Pasp03a.asp-記事本13回區(qū)

文件g編輯②格式@)查看9幫助國(guó))

<?-ttincludeFile=*'conna.asp**―>

<%

sql=",select*Fromusers',

rs.opensqlydb91y3

rs.addnew

r5(''name'')=request

rs(,,tel,*)=request.Forn(**tel")

rs("city")=request.form("city")

rs.update

rs.close

setrs=nothing

response.write”記錄添加成功,”

%>

圖8.25寫入記錄的另一方式

圖8.26通過(guò)提交表單提交數(shù)據(jù)

http://localhost/yunlun/r?root/test/asp03a.asp...

文件更)編輯?)查看(V)收藏⑥工具①幫助國(guó))

地址也)▼http://localhost/yunlun/wwwroot/test/asp03a.asp

記錄添加成功!

為完畢■A本地Intranet

圖8.27記錄添加成功

圖8.28數(shù)據(jù)庫(kù)表的變化顯示記錄添加成功

8.5記錄的查詢

本節(jié)學(xué)習(xí)掌握通過(guò)ASP頁(yè)面對(duì)Access數(shù)據(jù)庫(kù)表記錄的查詢顯示。顯然,我們要對(duì)所

有記錄進(jìn)行查詢,但是我們真正需要得到的記錄,不可能是所有記錄,所有我們必須能夠

通過(guò)適當(dāng)?shù)牟樵兎绞?,?lái)得到我們所要的記錄。

例如:下面的語(yǔ)句,依據(jù)SQL直詢語(yǔ)句,通過(guò)記錄集組件rs,得到所有記錄。這不我

們最后所需要的。

<!-includefile=//conn.asp*—>

<%

exec二〃select*fromusers”

setrs=server.createobject("adodb.recordset")

rs.openexec,conn,1,1

%>

下面請(qǐng)先看一組語(yǔ)句:

a=〃張三〃

b=8898002

exec=z,select*fromuserswherename='〃+a+”'andtel="+b

where后面加上的是條件,與是and,或是or,我想二,<二,>=,<,>的含義大家都知

道吧。這句話的意思就是搜索name是張三的,并且電話是111的記錄。還有一點(diǎn)就是如

果要搜索一個(gè)字段里面是不是包含一個(gè)字符串就可以這么寫:whereinstr(name,a)也就

是搜索name里面有a(張三)這個(gè)字符串的人。

我這里的a,b,是常量,大家可以讓a,b是表單提交過(guò)來(lái)的變量,這樣就可以做一個(gè)搜

索了。

t?asp。4f.asp一記事本

文件9編輯?格式Q)查看9幫助國(guó))

<fornname=''formT'method=,'poste,action=',asp04.asp,,>

<h3>請(qǐng)輸入查詢條件:</h3Xhr><br>

姓名;<lnputtype="text"nane=',nane">

,,,,

電話s<inputtype="text"name=tel>

<br><br>

<inputnane=',Subrnit,'ualue="確定”

<inputtype=f,reset"name="Subnit2(aualue=''取消”>

</Forn>

圖8.29杳詢條件提交表單

圖8.30查詢條件提交表單顯示效果

PaspO4.asp-記事本

文件任)編輯更)格式Q)查看W)幫助國(guó))

<?—ttincludefile=conn.asp-->

<%

name=request?for做''name")

tel=request

exec='*select*Fromuserswherenane=",,+nane+***and

tel="+tel

setrs=seruer.createobject('*adodb.recordset*1)

rs.openexec,conn,1,1

%>|

<tablewidth=,,100%,iborder=,,1,,>

<%

dowhilenotrs.eof

%><trheight=30>

<tdaliqn=center><%=rs(',nane,,)%></td>

<tdalign=centerXZ寸八d〉

<tdalign=center><%=rs(',city,,)%X/td>

<tdalign=center><%=rs("time,,)%X/td>

</tr>

<%

rs.mouenext

loop

%>

</table>

</html>

圖8.3l查詢并顯示結(jié)果

'Ahttp://localhost/yunlun/?vroot/test/asp04f.asp...

圖8.32執(zhí)行查詢條件提交表單

5http://localhost/yunlun/?<root/test/asp04.asp

文件QF)編輯查看9收藏?工具(T)幫助公sr

地址也)▼http://localhost/yunlun/wwwroot/test/asp04.asp0份轉(zhuǎn)到

張三8898002長(zhǎng)沙2005-4-919:53:01

張三8898002上海2005-4-232:05:40

⑥完畢■2本地Intranet

圖8.33顯示查詢結(jié)果

8.6記錄的刪除

本節(jié)學(xué)習(xí)掌握通過(guò)ASP頁(yè)面對(duì)Access數(shù)據(jù)庫(kù)表記錄的刪除操作。記錄的刪除操作可

使用SQL刪除語(yǔ)句來(lái)實(shí)現(xiàn)。

假設(shè)數(shù)據(jù)exasp.mdb的users表的記錄如卜.圖:

圖8.34users表記錄

請(qǐng)看下面的例子:在一個(gè)表單中輸入要?jiǎng)h除記錄的1D號(hào),然后刪除數(shù)據(jù)庫(kù)表中與這

個(gè)輸入值相同的ID的記錄。

E'asp05f.asp-記事本匚叵]區(qū)]

文件9編輯起)格式Q)查看W幫助直)

<Fornname=,'Forn1,'nethod=',post,*action=*'asp05|.asp,>>

請(qǐng)輸入刪除記錄ID:

<inputtype=,,texti,name=,,id,,>

<inputtype=,,subl^it,,nane=,,Submit,,ualue="確定'>>

</Forn>

圖8.35刪除條件提交表單

圖8.34中,給出了提交刪除申請(qǐng)的表單文件asp05f.asp,它向asp05.asp提交刪除

條件數(shù)據(jù)。

圖8.35中,給出了刪除記錄并顯示剩余記錄的代碼。其中下面兩行是關(guān)鍵性的代碼。

exec=/,delete*fromuserswhereID=〃&request.form(〃id〃)

conn,executeexec

第一行給出用于刪除的SQL語(yǔ)句字符串,其中條件是表中的ID字段值等于來(lái)自提交

表單的id變量值。第二行執(zhí)行這個(gè)SQL刪除語(yǔ)句。

其它代碼包括前面的包括文件和記錄集的定義和打開(kāi)。后面的是用于顯示剩余記錄的

代碼。

Pasp05.asp-記事本

文件國(guó))編輯更)格式Q)查看W)幫助國(guó))

<?一^includeFile=conn.asp->

<%

exec=,'select*fromusers*'

setrs=seruer.createobjectf^adodb.recordset**)

rs.openexecyconn,1,1

exec=,'delete*fromuserswhereID="&request

conn.executeexec

%>

<html>

<body>

<tablewidth=,,1OO%*'border=",1*'cellspacing="1"

cellpadding=,,O,,>

<%

dowhilenotrs.eof

%><tr>

<tdX%=rs(,,ID")%></td>

<tdX%=rs("naine,,)V</td>

<tdX%=rs(,,tel,,)%X/td>

<td><Vrs("city,,)V</td>

<tdX%=rs("time,,)V</td>

</tr>

<%

rs.nouenext

loop

%>

</table>

</body>

</htnl>

圖8.36刪除記錄并顯示剩余汜錄代碼

下面來(lái)執(zhí)行:

圖&37執(zhí)行提交表單并輸入記錄號(hào)

ID號(hào)為6的記錄被刪除剩余記錄顯示如下:

F

-…回回國(guó)―

?http://localhost/yunlun/xvroot/test/asp05.asp

文件編輯d)查看(V)收藏?工具①幫助出)靜

地址①)▼蒞]http://Iocalhost/yunlun/wwwroot/1est/asp05.aspV魚轉(zhuǎn)到

1三

2005-4-919:53:01

2四

2005-4-100:43:18

3五

六2005-4-100:44:38

5

88332212005-4-151:22:12

18sdfadf|1111|dsf|2005-4-152:08:10

19第二方式^78787―海口12005-4-152:12:19

21張三88980021上—1005-4-232:05:40

⑥完畢■a本地Intranet

圖&38執(zhí)行提交表單并輸入記錄號(hào)

8.7記錄的修改

修改記錄是數(shù)據(jù)庫(kù)基本操作之一。下面通過(guò)實(shí)例來(lái)學(xué)習(xí)修改記錄,其中有三個(gè)ASP頁(yè)

面:asp06f.asp(通過(guò)輸入修改查詢條件name來(lái)指定記錄)、asp06.asp(找到并顯示將

被修改的記錄,且可進(jìn)行修改數(shù)據(jù)提交)、asp06s.asp(更新記錄,實(shí)際修改表)。

?請(qǐng)看圖8.39,其中通過(guò)表單提交name數(shù)據(jù)。

,asp06f.asp-記事本匚)叵]反|

文件9編輯⑥格式查看9幫助國(guó))

<H3>記錄的修改</H3〉<HR>

〈formname=*,Forn1,*method=''post''Iaction="asp06.asp*'>

請(qǐng)輸入修改者姓名:

<inputtype=',text,*narne=",nane*'>

<inputtype="subnifnane=*'Submit,*ualue="確定”

</forn>

圖8.39用于給出修改者姓名的提交表單

?請(qǐng)看下面的圖8.40中的代碼。

其中有如下包含語(yǔ)句用于錯(cuò)誤處理:

<!-#includefile=〃err.asp〃一>

err.asp文件有如下代碼用于過(guò)濾錯(cuò)誤信息,當(dāng)田現(xiàn)錯(cuò)誤時(shí),代碼繼續(xù)運(yùn)行。

<%

Response.Buffer=True

OnErrorResumeNext

%>

在后面用以下代碼實(shí)現(xiàn)錯(cuò)誤處理,如果出現(xiàn)錯(cuò)誤則清除頁(yè)面并給出提示信息:

<%IfErr.Number<>0Then

Response.Clear

Response.Write〃沒(méi)有找到記錄!〃

EndIf

%>

下面這一段代碼先定義查詢字符串,然后通過(guò)記錄集對(duì)象打開(kāi)查詢并存放查詢結(jié)果。

注意查詢字符串中的where條件,name表示字段,后面跟一個(gè)字符串,所以要用單引號(hào)將

request,form("name")引起來(lái),request,form("name")則是返回上面提交頁(yè)面中的數(shù)據(jù)作

為查詢值。

<%

exec二〃select*fromuserswherename='"&request.form("name")&〃'〃

setrs=server,createobject("adodb.recordset")

rs.openexec,conn

%>

接下來(lái)定義了一個(gè)表單。一方面這個(gè)表單得到rs的記錄字段值;另一方面表單中的

這些值又可以修改,并可提交給asp06s.asp頁(yè)面。

<formname=formlmethod=postaction=asp06s.asp>

編號(hào)<inputtype="text"name二〃ID〃value="。=rs(〃ID〃)%>〃>

姓名<inputtype二〃text“name="name"value=“〈斤rs(〃name〃)外>〃>

<br>

電話<inputtype="text〃name二〃tel〃value=“<%=rs

城市<inputtype二〃text〃name二〃city"value=“<%=rs(〃city〃)/>〃>

<inputtype=//submit"name="Submit"value=”確定〃X/td>

</form>

最后是關(guān)閉記錄集和數(shù)據(jù)庫(kù)連接對(duì)象。

<%

rs.close

setrs=nothing

conn,close

setconn=nothing

%>

Pasp06.asp-記事本13回區(qū))

文件電)編輯超)格式⑥)查看W)幫助國(guó))

<H3>修改記錄<〃3><皿>

<?一0includeFile=,,err.asp"―>

<?--ttincludeFile=,,conn.asp**-->

<%

exec=,'select*Fromuserswherenarne='"ftrequest.Forin(,,nainef,)&

setrs=sprupr.crpatpohjpctciadodh.rpcordspf)

rs.openexec9conn

%>

<Fornname=''fornrT'method=''post''action=,,asp06s.asp'^

編號(hào)<inputtype="text,Bname—ID"ualue=",<%=rs("ID,,)%>">

姓名<inputtype=',text,iname=''naine''ualue=,,<%=rs(,,name,,)%>">

<br>

電話<inputtype=',texfualue='<*寸sr'tel,?)%>'>

城市<inputtype="text''nane=",city"ualue=,,<%=rs(,'city,,)%>,*>

<inputtype=,,subnitMname=,,Subnit,*ualue="確定"X/td)

</Forn>

<%IFErr.Number<>9Then

Response.Clear

Response.Write”沒(méi)有找到記錄

EndIF

%>

<%

rs.close

setrs=nothing

conn.close

setconn=nothing

%>

圖8.40根據(jù)姓名找出并顯示記錄

?請(qǐng)看下面的圖8.41中的代碼。

為了接受asp06.asp中經(jīng)過(guò)修改后的記錄數(shù)據(jù),必須又要找到那條記錄,這時(shí)通過(guò)前

面已找到的記錄的ID來(lái)定位記錄。注意,在用rs打開(kāi)查詢時(shí)用到了參數(shù)“1,3”。

exec二〃select*fromuserswhereID=〃&request.form(〃ID")

setrs=server,createobject("adodb.recordset")

rs.openexec,conn,1,3

接著用三條語(yǔ)句將修改后的三個(gè)字段值寫入rs記錄集中,再進(jìn)行rs.update,更新數(shù)

據(jù)表,完成修改數(shù)據(jù)記錄值。后面是關(guān)閉記錄集和數(shù)據(jù)庫(kù)連接對(duì)象,并提示記錄修改成功。

rs(〃name〃)=request,form(,zname?/)

rs(/zterz)=request.form(〃tel〃)

rs(〃city〃)=request.form(〃city〃)

rs.update

rs.close

setrs=nothing

conn,close

setconn=nothing

response,write〃記錄修改成功!〃

Easp06s.asp-記事本13回岡

文件9編輯⑥格式查看9幫助Qp

<?-ttincludefile="conn.asp"―>

<%

exec=,'select*FromuserswhereID="&request

setrs=seruer.createobjectC'adodb.recordset")

rs.openexec,conn,1,3

rs("name")=request.forn("name**)

rsCtel'^^request-fornCtel")

rs("city")=request.form("city")

rs.update

rs.close

setrs=nothing

conn.close

setconn=nothing

response.write”記錄修改成功,”

圖8.41修改記錄

?下面是示例演示的情況:

users:表13回岡

IDnameHicitytime

?0張三8898002長(zhǎng)沙35-4-919:53:01

2李四8834990武漢35-4-100:43:18

3王五8787665鄭州35-4-100:44:38

5趙六8833221大同35-4-151:22:12

18sdfadf1111dsf35-4-152:08:10

19第二方式878787???5-4-152:12:19

21張三8898002上海35-4-232:05:40

米(自動(dòng)編號(hào))035-5-6

溫馨提示

  • 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)論