ASP編程入門進階(二十):ADO組件之插入數(shù)據(jù)記錄
更新時間:2007年01月03日 00:00:00 作者:
簡單的顯示記錄已經(jīng)掌握,現(xiàn)在需要的就是通過ASP將信息內(nèi)容插入到數(shù)據(jù)庫中。
一、擁有數(shù)據(jù)庫cnbruce.mdb
本數(shù)據(jù)庫的作用就是用來被插入數(shù)據(jù)的,可以直接采用上節(jié)中已經(jīng)建立的cnbruce.mdb文件,當然連接打開數(shù)據(jù)庫的文件conn.asp也就順利引用了。
二、建立輸入插入信息的頁面平臺addit.html
本頁的主要作用是:顯示一些文本輸入框以用來提供輸入信息內(nèi)容提交數(shù)據(jù)庫。
1,addit.html
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]
本頁其實很簡單,就是通過submit按鈕將表單的信息內(nèi)容提交到addit.asp頁面去處理。
三、建立處理接受數(shù)據(jù)并插入數(shù)據(jù)庫表的頁面程序addit.asp
2,addit.asp
恩,接著就是來具體分析一下。
1,<!--#include file="conn.asp" --> 不用說,凡是要和數(shù)據(jù)庫有聯(lián)系的都要運用到該連接文件。
2,whattitle=request.form("title")之類 就是將上頁表單中接受過來的值賦到一變量上,方便下面程序的調(diào)用。
3,rs.Open sql,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ù)庫記錄,對你來說完全是小菜一碟了。大體框架搭建完畢,下面就是具體的細化了。
其中包括:客戶端的表單檢測,防止用戶信息輸入的遺漏;當然最好還是要加上服務(wù)器端的表單檢測,由于客戶端的某些原因(比如自行設(shè)計提交非檢測的頁面)基于安全考慮,一切還是依服務(wù)器端所接受信息為準。那下面就繼續(xù)細化應(yīng)用下了。
1,客戶端檢測 其實就是通過簡單的腳本檢測,這在初學ASP提到腳本的時候說到,下面將再次重復。
加強的addit.html
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]
2,服務(wù)器端檢測 有人也許會問,既然有了客戶端的檢測,那還有多個服務(wù)器端的檢測呢?原因很簡單,比如仿照HTML表單提交頁,自行設(shè)計一張去除了表單檢測的頁面。當點擊提交,并且沒有任何信息時,到達服務(wù)器端如沒有任何防御則肯定會造成數(shù)據(jù)插入的失敗。
加強的addit.asp
可以看出,就是添加了如下類似的判斷。
很簡單,如果接受過來的信息為空,則彈出警告框,并且確認后返回到上頁即addit.html了。當然cn_author沒有設(shè)置檢測,因為當初設(shè)計該字段的接受值是允許為空的。
OK,總結(jié)一下,插入記錄主要就是
很簡單,先聲明addnew,然后一一對應(yīng),再提交插入數(shù)據(jù)庫。
這是一種插入數(shù)據(jù)庫的方法,下面就來接觸了解一下另外一種。
需要注意,結(jié)構(gòu)化的查詢語言也就是SQL語句能夠完成一些比較苛刻的數(shù)據(jù)庫操作。當然,對于諸如提取、插入信息之流就更不在話下了。所以下面采用的插入記錄的方法就是直接采用SQL語法完成。
修改了的addit.asp
本程序中,你會發(fā)現(xiàn)只要一行的SQL語句,不需要建立Rescord記錄集行,不需要聲明addnew,不要執(zhí)行update。直接通過conn.Execute(sql)來完成。
當然應(yīng)用此種方法,若必填字段接受值為空時,同樣能夠插入記錄。這和采用第一種會報
具有很大的容錯性。
是程序的可讀性還是方法的簡便高效率就任君選擇了。
一、擁有數(shù)據(jù)庫cnbruce.mdb
本數(shù)據(jù)庫的作用就是用來被插入數(shù)據(jù)的,可以直接采用上節(jié)中已經(jīng)建立的cnbruce.mdb文件,當然連接打開數(shù)據(jù)庫的文件conn.asp也就順利引用了。
二、建立輸入插入信息的頁面平臺addit.html
本頁的主要作用是:顯示一些文本輸入框以用來提供輸入信息內(nèi)容提交數(shù)據(jù)庫。
1,addit.html
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]
本頁其實很簡單,就是通過submit按鈕將表單的信息內(nèi)容提交到addit.asp頁面去處理。
三、建立處理接受數(shù)據(jù)并插入數(shù)據(jù)庫表的頁面程序addit.asp
2,addit.asp
<!--#include file="conn.asp" --> <% whattitle=request.form("title") whoauthor=request.form("author") whatcontent=request.form("content") %> <% Set rs = Server.CreateObject ("ADODB.Recordset") sql = "Select * from cnarticle" rs.Open sql,conn,3,2 %> <% rs.addnew rs("cn_title")=whattitle rs("cn_author")=whoauthor rs("cn_content")=whatcontent rs.update %> 文章添加成功,<a href="showit.asp">瀏覽</a> <% rs.close Set rs = Nothing conn.close set conn=Nothing %> |
恩,接著就是來具體分析一下。
1,<!--#include file="conn.asp" --> 不用說,凡是要和數(shù)據(jù)庫有聯(lián)系的都要運用到該連接文件。
2,whattitle=request.form("title")之類 就是將上頁表單中接受過來的值賦到一變量上,方便下面程序的調(diào)用。
3,rs.Open sql,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ù)庫記錄,對你來說完全是小菜一碟了。大體框架搭建完畢,下面就是具體的細化了。
其中包括:客戶端的表單檢測,防止用戶信息輸入的遺漏;當然最好還是要加上服務(wù)器端的表單檢測,由于客戶端的某些原因(比如自行設(shè)計提交非檢測的頁面)基于安全考慮,一切還是依服務(wù)器端所接受信息為準。那下面就繼續(xù)細化應(yīng)用下了。
1,客戶端檢測 其實就是通過簡單的腳本檢測,這在初學ASP提到腳本的時候說到,下面將再次重復。
加強的addit.html
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]
2,服務(wù)器端檢測 有人也許會問,既然有了客戶端的檢測,那還有多個服務(wù)器端的檢測呢?原因很簡單,比如仿照HTML表單提交頁,自行設(shè)計一張去除了表單檢測的頁面。當點擊提交,并且沒有任何信息時,到達服務(wù)器端如沒有任何防御則肯定會造成數(shù)據(jù)插入的失敗。
加強的addit.asp
<!--#include file="conn.asp" --> <% whattitle=trim(request.form("title")) whoauthor=trim(request.form("author")) whatcontent=trim(request.form("content")) %> <%if whattitle="" then%> <script language=vbs> alert("請輸入文章標題") history.go(-1) </script> <%end if%> <%if whatcontent="" then%> <script language=vbs> alert("請輸入文章標題") history.go(-1) </script> <%end if%> <% Set rs = Server.CreateObject ("ADODB.Recordset") sql = "Select * from cnarticle" rs.Open sql,conn,3,2 %> <% rs.addnew rs("cn_title")=whattitle rs("cn_author")=whoauthor rs("cn_content")=whatcontent rs.update %> 文章添加成功,<a href="showit.asp">瀏覽</a> <% rs.close Set rs = Nothing conn.close set conn=Nothing %> |
可以看出,就是添加了如下類似的判斷。
<%if whattitle="" then%> <script language=vbs> alert("請輸入文章標題") history.go(-1) </script> <%end if%> |
很簡單,如果接受過來的信息為空,則彈出警告框,并且確認后返回到上頁即addit.html了。當然cn_author沒有設(shè)置檢測,因為當初設(shè)計該字段的接受值是允許為空的。
OK,總結(jié)一下,插入記錄主要就是
rs.addnew rs("cn_title")=whattitle ... rs.update |
很簡單,先聲明addnew,然后一一對應(yīng),再提交插入數(shù)據(jù)庫。
這是一種插入數(shù)據(jù)庫的方法,下面就來接觸了解一下另外一種。
需要注意,結(jié)構(gòu)化的查詢語言也就是SQL語句能夠完成一些比較苛刻的數(shù)據(jù)庫操作。當然,對于諸如提取、插入信息之流就更不在話下了。所以下面采用的插入記錄的方法就是直接采用SQL語法完成。
修改了的addit.asp
<!--#include file="conn.asp" --> <% whattitle=request.form("title") whoauthor=request.form("author") whatcontent=request.form("content") %> <% sql = "insert into cnarticle(cn_title,cn_author,cn_content) values(' "&whattitle&" ',' "&whoauthor&" ',' "&whatcontent&" ')" conn.Execute(sql) %> 文章添加成功,<a href="showit.asp">瀏覽</a> <% conn.close set conn=Nothing %> |
本程序中,你會發(fā)現(xiàn)只要一行的SQL語句,不需要建立Rescord記錄集行,不需要聲明addnew,不要執(zhí)行update。直接通過conn.Execute(sql)來完成。
當然應(yīng)用此種方法,若必填字段接受值為空時,同樣能夠插入記錄。這和采用第一種會報
Microsoft JET Database Engine 錯誤 '80040e21' 字段 'xxx.xxx' 不能是零長度的字符串。 |
具有很大的容錯性。
是程序的可讀性還是方法的簡便高效率就任君選擇了。
相關(guān)文章
ASP中Request對象獲取客戶端數(shù)據(jù)的順序(容易忽略)
ASP中Request對象獲取客戶端數(shù)據(jù)的順序(容易忽略)...2006-08-08asp下連接數(shù)據(jù)庫 ASP鏈接數(shù)據(jù)庫字符串大全總結(jié)
asp下連接數(shù)據(jù)庫 ASP鏈接數(shù)據(jù)庫字符串大全總結(jié)...2007-11-11