簡單的顯示記錄已經掌握,現在需要的就是通過ASP將資訊內容插入到資料庫中。
一、擁有資料庫cnbruce.mdb
本資料庫的作用就是用來被插入資料的,可以直接採用上節中已經建立的cnbruce.mdb檔案,當然串連開啟資料庫的檔案conn.asp也就順利引用了。
二、建立輸入插入資訊的頁面平台addit.html
本頁的主要作用是:顯示一些文本輸入框以用來提供輸入資訊內容提交資料庫。
1,addit.html
<form action="addit.asp" method="post">Title:<input type="text" name="title"><br>Author:<input type="text" name="author"><br>Content:<br><textarea name="content" rows="8" cols="30"></textarea><br><input type="submit" value="Add"><input type="reset" value="Reset"></form>
[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"><!--function form1_onsubmit(){if (document.form1.title.value=="") { alert("請輸入文章標題") document.form1.title.focus() return false }else if(document.form1.content.value=="") { alert("請輸入文章內容") document.form1.content.focus() return false }}--></script><form action="addit.asp" method="post" name="form1" onsubmit="return form1_onsubmit()">Title:<input type="text" name="title"><br>Author:<input type="text" name="author"><br>Content:<br><textarea name="content" rows="8" cols="30"></textarea><br><input type="submit" value="Add"><input type="reset" value="Reset"></form>
[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' 不能是零長度的字串。
|
具有很大的容錯性。
是程式的可讀性還是方法的簡便高效率就任君選擇了。