ado|編程|資料|顯示|ado 學習ASP的萬裡長征就快到終點了:等把ASP的ADO組件搞定。當然這也是最重要的一步,幾乎前面所有的學習都是為了這個最終的目的。OK,下面就來詳細系統地來一一掌握,步步為營,各個擊破。
一,擁有資料庫
可以這麼說:靜態頁面和動態網頁面最大的區別就是採用了資料庫。有關一個WEB程式採用資料庫和不採用的優越性比較,就不去細細分析了,主要精力還是放在如何使用資料庫,如何熟練運用資料庫,如何更靈活地運用資料庫等等……其中運用操作資料庫主要是對資料庫內容進行:顯示、插入、修改、更新、查詢和刪除。
這些方法當然也不是一口就能吃出來的,要慢慢感受咀嚼、理解消化。當然首先很重要的便是先擁有資料庫了。否則,一切都是空談,巧媳婦難以無米之炊嘛。
一般而言,我們所說的資料庫其實就是一個資料庫檔案,該檔案是由一些資料庫管理系統(DBMS)建立產生的。目前一般的DBMS也就是常用常聽說的ACCESS,SQLSERVER,MYSQL,ORACLE。當然一般個人網站,小型企業採用ACCESS完全足夠;稍微大些的就採用同樣是Microsoft公司的SQL SERVER或者是MYSQL,值得注意的是MYSQL一般是和另外一種網路程式設計語言PHP完美結合的。當然更大型的就採用ORACLE了。呵呵,曾經在學習PB時還運用到SYBASE資料庫,UNIX系統的Informix資料庫……DBMS簡直是多如牛毛-_-!
話說過來,目前我們就直接使用ACCESS了:1,使用簡單;2,入門掌握容易;3,實在沒有比這個更適合初學的了。
一切還得從實際操作開始。
1,開啟ACCESS資料庫,選擇建立資料庫,將其命名為cnbruce.mdb,並儲存到一專門檔案夾database中
[被屏蔽廣告]
2,在建立的資料庫容器中雙擊“使用設計器建立表”,彈出的表1視窗中欄位名稱輸入“cn_id”,資料類型選擇“自動編號”,並選擇上方工具列中的鑰匙按鈕,將該欄位設為主鍵。
繼續輸入欄位“cn_title”,資料類型選擇“文本”;NEXT輸入欄位“cn_content”,資料類型選擇“備忘”;
PS:備忘和一般類型文本最大的區別就是備忘允許插入的欄位值相對要多些,這在插入一些較長文章的時候尤其重要。
仍然輸入欄位“cn_author”,資料類型選擇“文本”;並且切換到下面“常規”中的“允許Null 字元串”選擇“是”。
PS:這表面允許cn_author欄位的值可以是空的,這在當提交表單,某些資訊不填寫但要正確插入資料庫時,顯得很重要。
最後輸入欄位“cn_time”,資料類型選擇“日期/時間”,繼續切換到“常規”中的“預設值”輸入“now()”函數
末了,將“表1”另存新檔“cnarticle”
[被屏蔽廣告]
3,雙擊開啟cnartile表,填寫第一行:“cn_title”輸入“test”,“cn_content”輸入“this is a test”,“cn_author”輸入“cnbruce”,時間已經自動添加。完成!關閉表,關閉資料庫。
[被屏蔽廣告]
二,建立資料庫連接
OK,資料庫已經建立完畢,並且已經填寫了一行資訊內容。那麼現在需要的就是同過ASP將該行資訊顯示出來。
要想顯示,首先還是需要ASP與該資料庫檔案建立串連,具體怎麼建立?往下看。
1,conn.asp:主要起的是串連並開啟某資料庫檔案的功能。該檔案建議單獨存在,並且位置是和存放資料庫的檔案夾database處與同一物理層次。
<%
db_path = "database/cnbruce.mdb"
Set conn= Server.CreateObject("ADODB.Connection")
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(db_path)
conn.Open connstr
%>
db_path = "database/cnbruce.mdb",不用說,就是將資料庫的相對路徑賦到一個變數上,以方便下面繼續調用。
Set conn= Server.CreateObject("ADODB.Connection"),和其它建立組件一樣,建立了一個ADO串連,並用一對象conn來接受。
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(db_path),很顯然就是連接字串了,其包括開啟資料庫的驅動方法OLEDB,和開啟和哪個資料庫的串連(即資料庫的路徑)。
需要再次提醒的是:無論是FSO對檔案、檔案夾的操作還是ADO對資料庫的操作,對被操作檔案的取得都是獲得的絕對的物理地址,一般情況之下,採用Server.MapPath方法相對較好。
conn.Open connstr最後對象conn通過連接字串connstr開啟了資料庫的串連。
三,顯示資料庫內容
建立了資料庫,建立了和資料庫的串連,下面水到渠成地就是將資料庫中的內容通過ASP顯示出來。
2,showit.asp
<!--#include file="conn.asp" -->
<%
Set rs = Server.CreateObject ("ADODB.Recordset")
sql = "Select * from cnarticle"
rs.Open sql,conn,1,1
%>
<%
if rs.EOF and rs.BOF then
response.write ("暫時還沒有文章")
else
Do Until rs.EOF
response.write("文章標題是:"& rs("cn_title"))
response.write("<br>文章作者是:"& rs("cn_author"))
response.write("<br>文章加入時間是:"& rs("cn_time"))
response.write("<br>文章內容是:"& rs("cn_content"))
response.write("<hr>")
rs.MoveNext
Loop
end if
%>
<%
rs.close
Set rs = Nothing
conn.close
set conn=Nothing
%>
簡單調試本頁,不出任何意外,相信一定能將資料庫中的資訊顯示出來了。(PS:我的資料庫中輸寫了兩行)
[被屏蔽廣告]
下面就來具體一個一個解釋來理解沒行的含義:
1,<!--#include file="conn.asp" --> 沒有任何爭議,主要是調用conn.asp的所起的功效,這在解釋conn.asp檔案的時候已經明白。
2,Set rs = Server.CreateObject ("ADODB.Recordset") ADO組件除了Connection串連以外,還有Recordset綁定記錄集(相信用過DW做ASP的人現在開始有些重回故裡的感覺了)當然 rs 可以形象地想象成資料庫表中的某一行。
3,sql = "Select * from cnarticle" 標準的SQL結構化查詢語言 (SQL)。很簡單:建立了資料庫連接,也綁定了記錄集,那具體需要哪些資訊呢?也就是要篩選一些記錄集合了,不過當前採用的是無任何條件,即可以提取所有。
4,rs.Open sql,conn,1,1 真正地開啟通向資料庫中記錄集的大門,具體有關後面的參數可以從如下網址中獲得。
5,if rs.EOF and rs.BOF then 該語句裡面涉及到了rs.EOF 和 rs.BOF 以及兩者的邏輯運算 and 。rs.EOF 表示到達資料庫表中的最後一行,rs.BOF 表示到達資料庫表中的第一行。整個語句可以理解為,如果當前資料庫中的最後一行就是資料庫表中第一行,那麼可以肯定:當前資料庫表中沒有任何資料。
6,
Do Until rs.EOF
...
rs.MoveNext
Loop
主要就是一個DO LOOP 迴圈語句了,其中迴圈的結束條件為:直到rs.EOF,即值得資料庫表的最後一行。那麼在這些條件滿足的許可之內,就是來顯示具體的資訊了。
每次迴圈只能顯示資料庫表中的一行,如果要繼續讀取下行,那麼 rs.MoveNext 功能真是如此。
7,rs("cn_title")等等 主要就是具體顯示記錄集中的哪個特定欄位的資訊值了。很是簡單。
8,最後不要忘了釋放資源空間關閉記錄集串連,關閉資料庫連接。
四,一些特殊條件
1,有沒有注意到,資料庫表資訊的顯示一般是按照時間的先後排列的,也就經常提到的按時間的升序排列。需要注意:按時間升序,