ASP編程入門進階(二十):ADO組件之插入資料記錄

來源:互聯網
上載者:User

簡單的顯示記錄已經掌握,現在需要的就是通過ASP將資訊內容插入到資料庫中。

一、擁有資料庫cnbruce.mdb

本資料庫的作用就是用來被插入資料的,可以直接採用上節中已經建立的cnbruce.mdb檔案,當然串連開啟資料庫的檔案conn.asp也就順利引用了。

二、建立輸入插入資訊的頁面平台addit.html

本頁的主要作用是:顯示一些文本輸入框以用來提供輸入資訊內容提交資料庫。

1,addit.html
<form action="addit.asp" method="post"><br />Title:<input type="text" name="title"><br><br />Author:<input type="text" name="author"><br><br />Content:<br><br /><textarea name="content" rows="8" cols="30"></textarea><br><br /><input type="submit" value="Add"><br /><input type="reset" value="Reset"><br /></form><br />
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]

本頁其實很簡單,就是通過submit按鈕將表單的資訊內容提交到addit.asp頁面去處理。

三、建立處理接受資料並插入資料庫表的頁面程式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" --> 不用說,凡是要和資料庫有聯絡的都要運用到該串連檔案。

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

3,rs.Open sql,conn,3,2 注意參數和顯示資料庫時採用的參數的不同。

4,rs.addnew 很簡單也很顯眼的一個聲明:建立一個資料庫記錄集行。

5,rs("cn_title")=whattitle之類 即將接受的表單值對應到相關欄位中。

6,rs.update 只是值和資料庫欄位的對應,完了後還要將對應的值上傳提交到資料庫表中去。

7,插入後可以跳轉到showit.asp查看 需要說明,以後的ASP例題可能都是建立在前幾節內容的基礎之上完成的。

8,釋放資源 是規矩,不要忘記。

那麼,現在。插入並顯示資料庫記錄,對你來說完全是小菜一碟了。大體架構搭建完畢,下面就是具體的細化了。

其中包括:用戶端的表單檢測,防止使用者資訊輸入的遺漏;當然最好還是要加上伺服器端的表單檢測,由於用戶端的某些原因(比如自行設計提交非檢測的頁面)基於安全考慮,一切還是依伺服器端所接受資訊為準。那下面就繼續細化應用下了。

1,用戶端檢測 其實就是通過簡單的指令碼檢測,這在初學ASP提到指令碼的時候說到,下面將再次重複。

加強的addit.html
<script laguage="javascript"><br /><!--<br />function form1_onsubmit()<br />{<br />if (document.form1.title.value=="")<br /> {<br /> alert("請輸入文章標題")<br /> document.form1.title.focus()<br /> return false<br /> }<br />else if(document.form1.content.value=="")<br /> {<br /> alert("請輸入文章內容")<br /> document.form1.content.focus()<br /> return false<br /> }<br />}<br />--><br /></script></p><p><form action="addit.asp" method="post" name="form1" onsubmit="return form1_onsubmit()"><br />Title:<input type="text" name="title"><br><br />Author:<input type="text" name="author"><br><br />Content:<br><br /><textarea name="content" rows="8" cols="30"></textarea><br><br /><input type="submit" value="Add"><br /><input type="reset" value="Reset"><br /></form><br />
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]

2,伺服器端檢測 有人也許會問,既然有了用戶端的檢測,那還有多個伺服器端的檢測呢?原因很簡單,比如仿照HTML表單提交頁,自行設計一張去除了表單檢測的頁面。當點擊提交,並且沒有任何資訊時,到達伺服器端如沒有任何防禦則肯定會造成資料插入的失敗。

加強的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沒有設定檢測,因為當初設計該欄位的接受值是允許為空白的。

OK,總結一下,插入記錄主要就是

rs.addnew
rs("cn_title")=whattitle
...
rs.update

很簡單,先聲明addnew,然後一一對應,再提交插入資料庫。

這是一種插入資料庫的方法,下面就來接觸瞭解一下另外一種。

需要注意,結構化的查詢語言也就是SQL語句能夠完成一些比較苛刻的資料庫操作。當然,對於諸如提取、插入資訊之流就更不在話下了。所以下面採用的插入記錄的方法就是直接採用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
%>

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

當然應用此種方法,若必要欄位接受值為空白時,同樣能夠插入記錄。這和採用第一種會報

Microsoft JET Database Engine 錯誤 '80040e21'

欄位 'xxx.xxx' 不能是零長度的字串。

具有很大的容錯性。

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.