ADO組件之顯示數(shù)據(jù)記錄_第1頁
ADO組件之顯示數(shù)據(jù)記錄_第2頁
ADO組件之顯示數(shù)據(jù)記錄_第3頁
ADO組件之顯示數(shù)據(jù)記錄_第4頁
ADO組件之顯示數(shù)據(jù)記錄_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

ADO組件之顯示數(shù)據(jù)記錄學(xué)習(xí)ASP的萬里長征就快到終點了:等把ASP的ADO組件搞定。當(dāng)然這也是最重要的一步,幾乎前面所有的學(xué)習(xí)都是為了這個最終的目的。OK,下面就來詳細(xì)系統(tǒng)地來一一掌握,步步為營,各個擊破。

一,擁有數(shù)據(jù)庫

可以這么說:靜態(tài)頁面和動態(tài)頁面最大的區(qū)別就是采用了數(shù)據(jù)庫。有關(guān)一個WEB程序采用數(shù)據(jù)庫和不采用的優(yōu)越性比較,就不去細(xì)細(xì)分析了,主要精力還是放在如何使用數(shù)據(jù)庫,如何熟練運用數(shù)據(jù)庫,如何更靈活地運用數(shù)據(jù)庫等等……其中運用操作數(shù)據(jù)庫主要是對數(shù)據(jù)庫內(nèi)容進(jìn)行:顯示、插入、修改、更新、查詢和刪除。

這些方法當(dāng)然也不是一口就能吃出來的,要慢慢感受咀嚼、理解消化。當(dāng)然首先很重要的便是先擁有數(shù)據(jù)庫了。否則,一切都是空談,巧媳婦難以無米之炊嘛。

一般而言,我們所說的數(shù)據(jù)庫其實就是一個數(shù)據(jù)庫文件,該文件是由一些數(shù)據(jù)庫管理系統(tǒng)(DBMS)建立生成的。目前一般的DBMS也就是常用常聽說的ACCESS,SQLSERVER,MYSQL,ORACLE。當(dāng)然一般個人站點,小型企業(yè)采用ACCESS完全足夠;稍微大些的就采用同樣是Microsoft公司的SQLSERVER或者是MYSQL,值得注意的是MYSQL一般是和另外一種網(wǎng)絡(luò)編程語言PHP完美結(jié)合的。當(dāng)然更大型的就采用ORACLE了。呵呵,曾經(jīng)在學(xué)習(xí)PB時還運用到SYBASE數(shù)據(jù)庫,UNIX系統(tǒng)的Informix數(shù)據(jù)庫……DBMS簡直是多如牛毛-_-!

話說過來,目前我們就直接使用ACCESS了:1,使用簡單;2,入門掌握容易;3,實在沒有比這個更適合初學(xué)的了。

一切還得從實際操作開始。

1,打開ACCESS數(shù)據(jù)庫,選擇新建數(shù)據(jù)庫,將其命名為cnbruce.mdb,并保存到一專門文件夾database中

[被屏蔽廣告]

2,在新建的數(shù)據(jù)庫容器中雙擊“使用設(shè)計器創(chuàng)建表”,彈出的表1窗口中字段名稱輸入“cn_id”,數(shù)據(jù)類型選擇“自動編號”,并選擇上方工具欄中的鑰匙按鈕,將該字段設(shè)為主鍵。

繼續(xù)輸入字段“cn_title”,數(shù)據(jù)類型選擇“文本”;NEXT輸入字段“cn_content”,數(shù)據(jù)類型選擇“備注”;

PS:備注和一般類型文本最大的區(qū)別就是備注允許插入的字段值相對要多些,這在插入一些較長文章的時候尤其重要。

仍然輸入字段“cn_author”,數(shù)據(jù)類型選擇“文本”;并且切換到下面“常規(guī)”中的“允許空字符串”選擇“是”。

PS:這表面允許cn_author字段的值可以是空的,這在當(dāng)提交表單,某些信息不填寫但要正確插入數(shù)據(jù)庫時,顯得很重要。

最后輸入字段“cn_time”,數(shù)據(jù)類型選擇“日期/時間”,繼續(xù)切換到“常規(guī)”中的“默認(rèn)值”輸入“now()”函數(shù)

末了,將“表1”另存為“cnarticle”

[被屏蔽廣告]

3,雙擊打開cnartile表,填寫第一行:“cn_title”輸入“test”,“cn_content”輸入“thisisatest”,“cn_author”輸入“cnbruce”,時間已經(jīng)自動添加。完成!關(guān)閉表,關(guān)閉數(shù)據(jù)庫。

[被屏蔽廣告]

二,建立數(shù)據(jù)庫連接

OK,數(shù)據(jù)庫已經(jīng)建立完畢,并且已經(jīng)填寫了一行信息內(nèi)容。那么現(xiàn)在需要的就是同過ASP將該行信息顯示出來。

要想顯示,首先還是需要ASP與該數(shù)據(jù)庫文件建立連接,具體怎么建立?往下看。

1,conn.asp:主要起的是連接并打開某數(shù)據(jù)庫文件的功能。該文件建議單獨存在,并且位置是和存放數(shù)據(jù)庫的文件夾database處與同一物理層次。

<%

db_path="database/cnbruce.mdb"

Setconn=Server.CreateObject("ADODB.Connection")

connstr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath(db_path)

conn.Openconnstr

%>

db_path="database/cnbruce.mdb",不用說,就是將數(shù)據(jù)庫的相對路徑賦到一個變量上,以方便下面繼續(xù)調(diào)用。

Setconn=Server.CreateObject("ADODB.Connection"),和其它建立組件一樣,建立了一個ADO連接,并用一對象conn來接受。

connstr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath(db_path),很顯然就是連接字符串了,其包括打開數(shù)據(jù)庫的驅(qū)動方法OLEDB,和打開和哪個數(shù)據(jù)庫的連接(即數(shù)據(jù)庫的路徑)。

需要再次提醒的是:無論是FSO對文件、文件夾的操作還是ADO對數(shù)據(jù)庫的操作,對被操作文件的取得都是獲得的絕對的物理地址,一般情況之下,采用Server.MapPath方法相對較好。

conn.Openconnstr最后對象conn通過連接字符串connstr打開了數(shù)據(jù)庫的連接。

三,顯示數(shù)據(jù)庫內(nèi)容

建立了數(shù)據(jù)庫,建立了和數(shù)據(jù)庫的連接,下面水到渠成地就是將數(shù)據(jù)庫中的內(nèi)容通過ASP顯示出來。

2,showit.asp

<!--#includefile="conn.asp"-->

<%

Setrs=Server.CreateObject("ADODB.Recordset")

sql="Select*fromcnarticle"

rs.Opensql,conn,1,1

%>

<%

ifrs.EOFandrs.BOFthen

response.write("暫時還沒有文章")

else

DoUntilrs.EOF

response.write("文章標(biāo)題是:"&rs("cn_title"))

response.write("<br>文章作者是:"&rs("cn_author"))

response.write("<br>文章加入時間是:"&rs("cn_time"))

response.write("<br>文章內(nèi)容是:"&rs("cn_content"))

response.write("<hr>")

rs.MoveNext

Loop

endif

%>

<%

rs.close

Setrs=Nothing

conn.close

setconn=Nothing

%>

簡單調(diào)試本頁,不出任何意外,相信一定能將數(shù)據(jù)庫中的信息顯示出來了。(PS:我的數(shù)據(jù)庫中輸寫了兩行)

[被屏蔽廣告]

下面就來具體一個一個解釋來理解沒行的含義:

1,<!--#includefile="conn.asp"-->沒有任何爭議,主要是調(diào)用conn.asp的所起的功效,這在解釋conn.asp文件的時候已經(jīng)明白。

2,Setrs=Server.CreateObject("ADODB.Recordset")ADO組件除了Connection連接以外,還有Recordset綁定記錄集(相信用過DW做ASP的人現(xiàn)在開始有些重回故里的感覺了)當(dāng)然rs可以形象地想象成數(shù)據(jù)庫表中的某一行。

3,sql="Select*fromcnarticle"標(biāo)準(zhǔn)的SQL結(jié)構(gòu)化查詢語言。很簡單:建立了數(shù)據(jù)庫連接,也綁定了記錄集,那具體需要哪些信息呢?也就是要篩選一些記錄集合了,不過當(dāng)前采用的是無任何條件,即可以提取所有。

4,rs.Opensql,conn,1,1真正地打開通向數(shù)據(jù)庫中記錄集的大門,具體有關(guān)后面的參數(shù)可以從如下網(wǎng)址中獲得。不帶1,1會出錯

前一個1是游標(biāo)類型,第二個是鎖定類型,在ADODB.inc(好像是這個文件名)定義了一堆常量,其中就有這兩個,但是必須要包含那個文件才可以使用,所以就都使用數(shù)值了

第一個:

1,前向游標(biāo):即讀取數(shù)據(jù)記錄只能從前向后讀,不能返回,并且不能反映讀取同時其它用戶對數(shù)據(jù)庫的更新

2,靜態(tài)游標(biāo),可向前和向后,但是不能反映其它用戶的更新

3,動態(tài)游標(biāo),功能最強(qiáng),當(dāng)然也最耗資源

第二個

1,只讀鎖定,只能讀不可以寫的鎖定數(shù)數(shù)據(jù)庫

2,悲觀鎖定,從打開數(shù)據(jù)庫開始鎖定數(shù)據(jù)庫,即鎖定時其它用戶無法更新數(shù)據(jù)庫

3,樂觀鎖定,只在更新的瞬間鎖定數(shù)據(jù)庫

4,批量樂觀鎖定,在更新完一批以后提交到數(shù)據(jù)庫時才鎖定,如果有很多用戶同時在更新數(shù)據(jù)庫,則有可能更新到同一條記錄

悲觀鎖定最不容易發(fā)生沖突,但是鎖定時間太長,各有各的用途,實際應(yīng)用時選擇

5,ifrs.EOFandrs.BOFthen該語句里面涉及到了rs.EOF和rs.BOF以及兩者的邏輯運算and。rs.EOF表示到達(dá)數(shù)據(jù)庫表中的最后一行,rs.BOF表示到達(dá)數(shù)據(jù)庫表中的第一行。整個語句可以理解為,如果當(dāng)前數(shù)據(jù)庫中的最后一行就是數(shù)據(jù)庫表中第一行,那么可以肯定:當(dāng)前數(shù)據(jù)庫表中沒有任何數(shù)據(jù)。

6,

DoUntilrs.EOF

...

rs.MoveNext

Loop

主要就是一個DOLOOP循環(huán)語句了,其中循環(huán)的結(jié)束條件為:直到rs.EOF,即值得數(shù)據(jù)庫表的最后一行。那么在這些條件滿足的許可之內(nèi),就是來顯示具體的信息了。

每次循環(huán)只能顯示數(shù)據(jù)庫表中的一行,如果要繼續(xù)讀取下行,那么rs.MoveNext功能真是如此。

7,rs("cn_title")等等主要就是具體顯示記錄集中的哪個特定字段的信息值了。很是簡單。

8,最后不要忘了釋放資源空間關(guān)閉記錄集連接,關(guān)閉數(shù)據(jù)庫連接。

四,一些特殊條件

1,有沒有注意到,數(shù)據(jù)庫表信息的顯示一般是按照時間的先后排列的,也就經(jīng)常提到的按時間的升序排列。需要注意:按時間升序,并不一定每個數(shù)據(jù)庫表中都要有一個時間/日期類型的字段,只要存在一個自動編號的字段就可以了。因為該字段是永不重復(fù),并且是依次增大的。因此,按時間升序其實就是按自動編號中號碼數(shù)值的增加來進(jìn)行排序的。

當(dāng)然,問題的關(guān)鍵來了,那就是要按照時間的降序排列,即始終從最新的內(nèi)容開始顯示。那具體需要哪些手術(shù)呢?

很簡單,將連接字符串稍做修改。

由sql="Select*fromcnarticle"添加修改為

sql="Select*fromcnarticleorderbycn_iddesc"

其中orderbycn_id即通過cn_id字段,desc即降序了。

2,有是時候,只需要提取最前或者最新的幾條信息,那這個又具體如何操作呢?同樣還是連接字符串的修改

由sql="Select*fromcnarticleorderbycn_iddesc"添加修改為

sql="Selecttop3*fromcnarticleorderbycn_iddesc"

其中top3就表示提取最新的三條信息內(nèi)容了。

ThatsAll.現(xiàn)在一個文章系統(tǒng)、新聞系統(tǒng)或者留言本顯示部分的精華內(nèi)容你已不費吹灰之力搞定。

ADO組件之插入數(shù)據(jù)記錄簡單的顯示記錄已經(jīng)掌握,現(xiàn)在需要的就是通過ASP將信息內(nèi)容插入到數(shù)據(jù)庫中。

一、擁有數(shù)據(jù)庫cnbruce.mdb

本數(shù)據(jù)庫的作用就是用來被插入數(shù)據(jù)的,可以直接采用上節(jié)中已經(jīng)建立的cnbruce.mdb文件,當(dāng)然連接打開數(shù)據(jù)庫的文件conn.asp也就順利引用了。

二、建立輸入插入信息的頁面平臺addit.html

本頁的主要作用是:顯示一些文本輸入框以用來提供輸入信息內(nèi)容提交數(shù)據(jù)庫。

1,addit.html

<formaction="addit.asp"method="post">

Title:<inputtype="text"name="title"><br>

Author:<inputtype="text"name="author"><br>

Content:<br>

<textareaname="content"rows="8"cols="30"></textarea><br>

<inputtype="submit"value="Add">

<inputtype="reset"value="Reset">

</form>

[CtrlA全部選擇提示:你可先修改部分代碼,再按運行]

本頁其實很簡單,就是通過submit按鈕將表單的信息內(nèi)容提交到addit.asp頁面去處理。網(wǎng)頁游戲

三、建立處理接受數(shù)據(jù)并插入數(shù)據(jù)庫表的頁面程序addit.asp

2,addit.asp

<!--#includefile="conn.asp"-->

<%

whattitle=request.form("title")

whoauthor=request.form("author")

whatcontent=request.form("content")

%>

<%

Setrs=Server.CreateObject("ADODB.Recordset")

sql="Select*fromcnarticle"

rs.Opensql,conn,3,2

%>

<%

rs.addnew

rs("cn_title")=whattitle

rs("cn_author")=whoauthor

rs("cn_content")=whatcontent

rs.update

%>

文章添加成功,<ahref="showit.asp">瀏覽</a>

<%

rs.close

Setrs=Nothing

conn.close

setconn=Nothing

%>

恩,接著就是來具體分析一下。

1,<!--#includefile="conn.asp"-->不用說,凡是要和數(shù)據(jù)庫有聯(lián)系的都要運用到該連接文件。

2,whattitle=request.form("title")之類就是將上頁表單中接受過來的值賦到一變量上,方便下面程序的調(diào)用。

3,rs.Opensql,conn,3,2注意參數(shù)和顯示數(shù)據(jù)庫時采用的參數(shù)的不同。

4,rs.addnew很簡單也很顯眼的一個聲明:新建一個數(shù)據(jù)庫記錄集行。

5,rs("cn_title")=whattitle之類即將接受的表單值對應(yīng)到相關(guān)字段中。

6,rs.update只是值和數(shù)據(jù)庫字段的對應(yīng),完了后還要將對應(yīng)的值上傳提交到數(shù)據(jù)庫表中去。

7,插入后可以跳轉(zhuǎn)到showit.asp查看需要說明,以后的ASP例題可能都是建立在前幾節(jié)內(nèi)容的基礎(chǔ)之上完成的。

8,釋放資源是規(guī)矩,不要忘記。

那么,現(xiàn)在。插入并顯示數(shù)據(jù)庫記錄,對你來說完全是小菜一碟了。大體框架搭建完畢,下面就是具體的細(xì)化了。

其中包括:客戶端的表單檢測,防止用戶信息輸入的遺漏;當(dāng)然最好還是要加上服務(wù)器端的表單檢測,由于客戶端的某些原因(比如自行設(shè)計提交非檢測的頁面)基于安全考慮,一切還是依服務(wù)器端所接受信息為準(zhǔn)。那下面就繼續(xù)細(xì)化應(yīng)用下了。

1,客戶端檢測其實就是通過簡單的腳本檢測,這在初學(xué)ASP提到腳本的時候說到,下面將再次重復(fù)。

加強(qiáng)的addit.html

<scriptlaguage="javascript">

<!--

functionform1_onsubmit()

{

if(document.form1.title.value=="")

{

alert("請輸入文章標(biāo)題")

document.form1.title.focus()

returnfalse

}

elseif(document.form1.content.value=="")

{

alert("請輸入文章內(nèi)容")

document.form1.content.focus()

returnfalse

}

}

-->

</script>

<formaction="addit.asp"method="post"name="form1"onsubmit="returnform1_onsubmit()">

Title:<inputtype="text"name="title"><br>

Author:<inputtype="text"name="author"><br>

Content:<br>

<textareaname="content"rows="8"cols="30"></textarea><br>

<inputtype="submit"value="Add">

<inputtype="reset"value="Reset">

</form>

[CtrlA全部選擇提示:你可先修改部分代碼,再按運行]

2,服務(wù)器端檢測有人也許會問,既然有了客戶端的檢測,那還有多個服務(wù)器端的檢測呢?原因很簡單,比如仿照HTML表單提交頁,自行設(shè)計一張去除了表單檢測的頁面。當(dāng)點擊提交,并且沒有任何信息時,到達(dá)服務(wù)器端如沒有任何防御則肯定會造成數(shù)據(jù)插入的失敗。網(wǎng)頁編程

加強(qiáng)的addit.asp

<!--#includefile="conn.asp"-->

<%

whattitle=trim(request.form("title"))

whoauthor=trim(request.form("author"))

whatcontent=trim(request.form("content"))

%>

<%ifwhattitle=""then%>

<scriptlanguage=vbs>

alert("請輸入文章標(biāo)題")

history.go(-1)

</script>

<%endif%>

<%ifwhatcontent=""then%>

<scriptlanguage=vbs>

alert("請輸入文章標(biāo)題")

history.go(-1)

</script>

<%endif%>

<%

Setrs=Server.CreateObject("ADODB.Recordset")

sql="Select*fromcnarticle"

rs.Opensql,conn,3,2

%>

<%

rs.addnew

rs("cn_title")=whattitle

rs("cn_author")=whoauthor

rs("cn_content")=whatcontent

rs.update

%>

文章添加成功,<ahref="showit.asp">瀏覽</a>網(wǎng)頁制作

<%

rs.close

Setrs=Nothing

conn.close

setconn=Nothing

%>

可以看出,就是添加了如下類似的判斷。

<%ifwhattitle=""then%>

<scriptlanguage=vbs>

alert("請輸入文章標(biāo)題")

history.go(-1)

</script>

<%endif%>

很簡單,如果接受過來的信息為空,則彈出警告框,并且確認(rèn)后返回到上頁即addit.html了。當(dāng)然cn_author沒有設(shè)置檢測,因為當(dāng)初設(shè)計該字段的接受值是允許為空的。

OK,總結(jié)一下,插入記錄主要就是

rs.addnew

rs("cn_title")=whattitle

...

rs.update

很簡單,先聲明addnew,然后一一對應(yīng),再提交插入數(shù)據(jù)庫。

這是一種插入數(shù)據(jù)庫的方法,下面就來接觸了解一下另外一種。

需要注意,結(jié)構(gòu)化的查詢語言也就是SQL語句能夠完成一些比較苛刻的數(shù)據(jù)庫操作。當(dāng)然,對于諸如提取、插入信息之流就更不在話下了。所以下面采用的插入記錄的方法就是直接采用SQL語法完成。

修改了的addit.asp

<!--#includefile="conn.asp"-->

<%

whattitle=request.form("title")網(wǎng)頁

whoauthor=request.form("author")

whatcontent=request.form("content")

%>

<%

sql="insertintocnarticle(cn_title,cn_author,cn_content)values("&whattitle&","&whoauthor&","&whatcontent&")"

conn.Execute(sql)

%>

文章添加成功,<ahref="showit.asp">瀏覽</a>

<%

conn.close

setconn=Nothing

%>

本程序中,你會發(fā)現(xiàn)只要一行的SQL語句,不需要建立Rescord記錄集行,不需要聲明addnew,不要執(zhí)行update。直接通過conn.Execute(sql)來完成。

當(dāng)然應(yīng)用此種方法,若必填字段接受值為空時,同樣能夠插入記錄。這和采用第一種會報

MicrosoftJETDatabaseEngine錯誤80040e21

字段xxx.xxx不能是零長度的字符串。

具有很大的容錯性。

是程序的可讀性還是方法的簡便高效率就任君選擇了。

ADO組件之修改數(shù)據(jù)記錄再來小總結(jié)一下:對數(shù)據(jù)庫的操作無非就是顯示記錄,插入記錄,修改記錄,刪除記錄,查詢記錄。

并且在有關(guān)顯示記錄的時候還涉及到顯示的輸出格式、分頁程序,那么再結(jié)合插入記錄,一個簡單的新聞系統(tǒng),文章系統(tǒng),留言系統(tǒng),注冊登陸系統(tǒng)不成任何問題。

下面就涉及到管理這塊,需要對數(shù)據(jù)庫記錄進(jìn)行修改。

首先,要修改哪條

修改,不是籠而統(tǒng)之的,而是要針對某條具體對相應(yīng)修改??梢孕蜗蟮卣f,就是對數(shù)據(jù)庫表中的具體哪一行進(jìn)行具體的修改。

所以,這時候的記錄集就有它特定的某個,當(dāng)然這個主要還是由SQL語句來決定的。

比如sql="select*fromtablewhereid=1"就表示提取的id編號是1的那行的所有記錄,然后只要將該行中需要修改的字段賦以新值然后上傳數(shù)據(jù)庫就OK了。

同樣的語句sql="select*fromtablewhereid=2"相信你也能明白。

但作為我們在頁面中,可不是就這樣固定的,有可是選擇某連接,或者輸入某表單值……跳轉(zhuǎn)到專門的修改頁,這樣所有的任務(wù)全在修改頁上了,它所具備的SQL語句應(yīng)該是適應(yīng)性強(qiáng)的

比如sql="select*fromtablewhereid="&request.queyrstring("id")

其次,將要修改的對應(yīng)賦值

很簡單,正如插入記錄一樣,將字段和值對應(yīng)起來。

rs("cn_name")="cnbruce"

rs("cn_sex")="male"

對應(yīng)的值當(dāng)然也可以是某個變量或函數(shù)

最后,上傳更新數(shù)據(jù)庫

和插入一樣進(jìn)行rs.updata,其實觀察下來,插入新記錄和更新記錄只是多了rs.addnew這行的聲明。

1,showit.asp

該文件是前面例中所建立引用的。其主要是顯示的作用,那么現(xiàn)在,針對具體的某條記錄增加跳轉(zhuǎn)到修改頁的超級鏈接。

<%

Fori=1tors.PageSize利用fornext循環(huán)依次讀出當(dāng)前頁的記錄

ifrs.EOFthen

ExitFor

endif

response.write("<ahref=change.asp?id="&rs("cn_id")&">修改</a>")

response.write("文章標(biāo)題是:"&rs("cn_title"))

response.write("<br>文章作者是:"&rs("cn_author"))

response.write("<br>文章加入時間是:"&rs("cn_time"))

response.write("<br>文章內(nèi)容是:"&rs("cn_content"))

response.write("<hr>")

rs.MoveNext

Next

%>

注意response.write("<ahref=change.asp?id="&rs("cn_id")&">修改</a>")

后面的參數(shù)id的值則是動態(tài)的,那接著就看chang.asp的能耐了。

2,change.asp

<!--#includefile="conn.asp"-->

<%

id=request.querystring("id")

%>

<%ifrequest.form("submit")="change"then

whattitle=request.form("title")

whoauthor=request.form("author")

whatcontent=request.form("content")

id=request.form("id")

Setrs=Server.CreateObject("ADODB.Recordset")

sql="Select*fromcnarticlewherecn_id="&id

rs.Opensql,conn,3,2

rs("cn_title")=whattitle

rs("cn_author")=whoauthor

rs("cn_content")=whatcontent

rs.update

rs.close

Setrs=Nothing

conn.close

setconn=Nothing

response.redirect("showit.asp")

response.end

%>

<%endif%>

<%

ifid<>""then

Setrs=Server.CreateObject("ADODB.Recordset")

sql="select*fromcnarticlewherecn_id="&id

rs.Opensql,conn,1,1

whattitle=rs("cn_title")

whoauthor=rs("cn_author")

whatcontent=rs("cn_content")

endif

%>

<formaction="change.asp"method="post">

Title:<inputtype="text"name="title"value=<%=whattitle%>><br>

Author:<inputtype="text"name="author"value=<%=whoauthor%>><br>

Content:<br>

<textareaname="content"rows="8"cols="30"><%=whatcontent%></textarea><br>

<inputtype="submit"value="change"name="submit">網(wǎng)頁優(yōu)化

<inputtype="reset"value="Reset">

<inputname="id"type="hidden"value="<%=id%>">

</form>

當(dāng)然所有的檢察,安全防護(hù)都還沒做,BUG多多,自己也來慢慢解決。

另外一類的修改更新

<%ifrequest.form("submit")="change"then

whattitle=request.form("title")

whoauthor=request.form("author")

whatcontent=request.form("content")

id=request.form("id")

sql="updatecnarticlesetcn_title="&whattitle&",cn_author="&whoauthor&",cn_content="&whatcontent&"wherecn_id="&id

conn.Execute(sql)

conn.close

setconn=Nothing

response.redirect("showit.asp")

response.end

%>

ADO組件之刪除數(shù)據(jù)記錄1,首先要明確刪除哪條記錄

無非還就是SQL語句了,比如對應(yīng)到特定的某ID上。

id=request.form("id")

sql="Select*fromcnarticlewherecn_id="&id

Setrs=Server.CreateObject("ADODB.Recordset")

rs.Opensql,conn,2,3

2,很簡單的一條語句:刪除

rs.delete

3,最好能在修改之前征求確認(rèn)刪除

<scriptlanguage="JavaScript">

<!--

functionsuredo(src,q)

{

varret;

ret=confirm(q);

if(ret!=false)window.location=src;

}

//-->

</script>

<ahref=javascript:suredo("del.asp?id=<%=id%>","確定刪除?")>Delete</a>

最直接的一條語句

sql="delete*fromcnarticlewherecn_id="&id

conn.Execute(sql)

ADO組件之查詢數(shù)據(jù)記錄來源:

2007-2-1300:00:00網(wǎng)友評論0條字體:[大中小]~我要投稿!首先,了解下原理。

1,提供文本框進(jìn)行查詢內(nèi)容的輸入

2,將查詢信息提交頁面程序處理

3,程序頁主要作用:接受查詢信息,根據(jù)此信息調(diào)用特定的SQL查詢語句,得出查詢結(jié)果并能顯示。

其實,主要精髓就是SQL語句的寫法上。

之前的提取為"select*formwhattablewhereid="&id

插入為"insertintowhattable(xx_rs)values("&content&")"

刪除為"deletefromwhattablewhereid="&id

修改為"updatewhattablesetxx_rs="&log_content&"whereid="&id

則查詢?yōu)?select*formwhattablewherexx_rslike%"&wahtkey&"%"

下面通過一個例題來研究下

1,建立數(shù)據(jù)庫zipcode.mdb中的zip表

字段id,類型自動編

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論