程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> ASP編程入門進階(二十):ADO組件之顯示數據記錄

ASP編程入門進階(二十):ADO組件之顯示數據記錄

編輯:關於ASP編程
學習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”,數據類型選擇“文本”;並且切換到下面“常規”中的“允許空字符串”選擇“是”。
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結構化查詢語言。很簡單:建立了數據庫連接,也綁定了記錄集,那具體需要哪些信息呢?也就是要篩選一些記錄集合了,不過當前采用的是無任何條件,即可以提取所有。

4,rs.Open sql,conn,1,1 真正地打開通向數據庫中記錄集的大門,具體有關後面的參數可以從如下網址中獲得。 http://www.cnbruce.com/blog/showlog.asp?cat_id=26&log_id=283

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,有沒有注意到,數據庫表信息的顯示一般是按照時間的先後排列的,也就經常提到的按時間的升序排列。需要注意:按時間升序,並不一定每個數據庫表中都要有一個時間/日期類型的字段,只要存在一個自動編號的字段就可以了。因為該字段是永不重復,並且是依次增大的。因此,按時間升序其實就是按自動編號中號碼數值的增加來進行排序的。

當然,問題的關鍵來了,那就是要按照時間的降序排列,即始終從最新的內容開始顯示。那具體需要哪些手術呢?
很簡單,將連接字符串稍做修改。

由 sql = "Select * from cnarticle" 添加修改為
sql = "Select * from cnarticle order by cn_id desc"
其中 order by cn_id 即通過cn_id字段,desc 即降序了。

2,有是時候,只需要提取最前或者最新的幾條信息,那這個又具體如何操作呢?同樣還是連接字符串的修改
由 sql = "Select * from cnarticle order by cn_id desc" 添加修改為
sql = "Select top 3 * from cnarticle order by cn_id desc"
其中 top 3 就表示提取最新的三條信息內容了。

That's All. 現在一個文章系統、新聞系統或者留言本顯示部分的精華內容你已不費吹灰之力搞定。

留下你的是:文章的格式可能顯示不對勁,比如回車、空格都不顯示了,那麼你就還要學會處理接受的數據庫表的值(在ASP的幾個練習中提到的);文章不能老是打開數據庫輸入信息啊,那麼你就要繼續學會如何用ASP插入數據到庫表;再有就是文章多了,一個頁面看是不是很麻煩?那麼你還要學會分頁技術……

要搞的太多了,後面我會詳細道來:)
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved