版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025委托收購合同專業(yè)版范文
- 2025設(shè)立有限責(zé)任公司出資合同
- 2025私人的轉(zhuǎn)讓合同
- 線上醫(yī)療服務(wù)的發(fā)展現(xiàn)狀與未來趨勢分析
- 商場教師節(jié)促銷活動策劃方案
- 2025年湘師大新版必修三語文下冊階段測試試卷
- 2025年浙教版七年級生物下冊月考試卷含答案
- 2025年湘教新版選擇性必修3物理上冊階段測試試卷含答案
- 2025年度智能家居鋪面轉(zhuǎn)租合同協(xié)議4篇
- 二零二五年度民辦學(xué)校教師信息技術(shù)應(yīng)用聘用合同4篇
- GB/T 45120-2024道路車輛48 V供電電壓電氣要求及試驗
- 春節(jié)文化常識單選題100道及答案
- 華中師大一附中2024-2025學(xué)年度上學(xué)期高三年級第二次考試數(shù)學(xué)試題(含解析)
- 12123交管學(xué)法減分考試題及答案
- 2025年寒假實踐特色作業(yè)設(shè)計模板
- 24年追覓在線測評28題及答案
- 高考滿分作文常見結(jié)構(gòu)
- 心肌梗死診療指南
- 食堂項目組織架構(gòu)圖
- 原油脫硫技術(shù)
- GB/T 2518-2019連續(xù)熱鍍鋅和鋅合金鍍層鋼板及鋼帶
評論
0/150
提交評論