搜索
熱搜: 活動 交友 discuz
查看: 2390|回復: 0
打印 上一主題 下一主題

[教學] 在ASP中使用資料庫

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-8-14 04:53:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
ASP有一個最重要的功能,就是它可以讓你非常輕鬆地連接資料庫。通常都是和一個Access或者一個SQL資料庫相連。因為Access是最容易起步的,同時,在你的機器上也許已經都裝有Access了,所以,在下面的例子中,我們都將使用Access來做例子。一旦你學習了ASP和Access資料庫連接的核心技術方法,當你開始使用SQL server的時候,你就會發現,兩者所需要的關鍵技術是基本相同的。轉自:動態網製作指南 www.knowsky.com

當你要連接資料庫的時候,你需要在服務器上將這個資料庫打開。你可以通過使用資料源名(DSN)或者通過在你的腳本語言中直接使用一個DSN-less連接的方法來連接和打開資料庫。
創建一個資料源名(DSN)
你可以通過在控制面板中給你的資料庫建立一個系統DSN來使你的資料庫可以在ASP中連接使用。你可以在你的本地電腦上建立若干個DSN,每個DSN對應你使用的不同的資料庫。在建立完DSN之後,你就可以在你的本地服務器上測試你的頁面了。如果你的網站是由
ISP提供服務的,並且這個ISP支援ASP,那麼很有可能它就會提供一個GUI接口,來給你的資料庫創建一個DSN。
在Windows 95/98/NT中,打開控制面板(開始選單->設置->控制面板),雙擊ODBC進入。
選擇系統DSN,點擊Add。
選擇「Microsoft Access Driver」,點擊結束。
填寫資料源名。這是你給你的資料庫起的名字,所以和一個alias是同樣的操作。
在資料庫選擇中點擊選擇按鈕,瀏覽系統中你創建的Access資料庫所存放的位置。
點擊OK
現在,新的DSN現在就會在系統DSN中顯示,並且可以在你的本地服務器上使用了。
連接資料庫
讓我們建立一個DSN-less連接,並且看看是如何連接資料庫的。當你創建一個DSN的時候,你就已經存儲了關於這個資料庫的一些信息,所以你不需要在每次需要使用一些信息的時候重複它們,這些信息如:資料庫類型、名稱、存放地點和可選性、用戶和密碼。
要創建一個DSN-less連接,你就需要提供同樣的信息。下面這個例子就顯示了如何給一個叫products的資料庫建立一個DSN-less連接:
<%
StrC
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.OpenStrConnect
%>
第二行定義了資料庫的驅動和物理路徑。為了要使用一個DSN-less連接,你就需要知道實際的檔案存放地點(絕對路徑)。Server.MapPath給任何一個使用主機服務的人提供了一個簡單的工作環境來查找出那些難於查到的實際訪問路徑。
如果我們已經建立了一個系統DSN,並命名為products,則連接碼應該為:
<%
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Open "products"
%>
現在,資料庫就已經打開了,那麼你可以做些什麼呢?第一件事情當然就是閱讀資料庫中的一系列記錄,並將它們放到你的頁面中去。但是,在這之前,你需要一個recordset。
Recordset
一個recordset是存儲在特殊資料庫表上的所有信息。所以,當你打開這個recordset的時候,表中所有的行和列的內容都是可訪問的。你需要打開這個recordeset,正如你需要打開資料庫連接一樣。它們的命令是相似的:
Set objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open "downloadable"、strConnect、0,1,2
這個語句就創建了一個名為downloadable表的recordset(objRec),這個表在products資料庫的strConnect中定義。使用Recordset open、我們就可以循環瀏覽這個表,並且可以將它的所有內容都顯示到螢幕上。或者,我們可以測試特定字段的內容,也可以只將我們關注的內容寫到螢幕上去。
每一列代表一個字段。所以,如果資料庫表如下所示:
Product ID
SKU
Name
File
1
PR12345
Product A
install_a.exe
2
PR12346
Product B
Install_b.exe

那麼,我們就有如下字段的內容:ProductID、SKU、Name、和File。你的表很可能會有許多額外的字段內容,可能包含很多東西,如價格或者是產品(商品)描述。但是這個示意圖可以給你提供最基本的資料庫表的概念。

填寫recordset內容
使用recordset是非常容易的一件事情。如果你想要循環瀏覽資料庫,並將所有的信息都列印到螢幕上顯示,你可以按照下面來操作:
While NOT objRec.EOF
' says to do this as long as we haven't reached the end of the file
  Response.WriteobjRec("ProductID") & "、"
  Response.WriteobjRec("SKU") & "、"
  Response.WriteobjRec("Name") & "、"
  Response.WriteobjRec("File") & "<BR>"
    objRec.MoveNext
      Wend ;
即使你沒有如此使用過loop,你仍然可以通過閱讀這個代碼來將信息寫到comma-delimited字符串裡,並且當資料庫表中創建了一個新行的時候,就重新創建一個新的行,來記錄表中的那一行。你可以使用同樣的方法將資料寫到HTML表格中去。通過使用Response.Write添加你的TABLE標籤,需要記住以下幾點:
你的HTML 標籤和引號中的內容。
如果你的標籤或者內容使用了引號,注意使用雙引號:
<FONT SIZE=""+2"">.
使用&來連接變量和HTML/內容信息
選擇recordset中的字段
假設我們的products資料庫同樣包含一個叫OS的字段,假設這個字段是一個平台分界符。同樣,讓我們假設存儲在這個字段的資料只能是如下的資料:Windows NT、Windows 95、Windows 98、Windows、Mac、Unix、或者 Linux。
下面,我們就可以確認我們需要將哪個字段列印到螢幕上,而要忽略哪些那些字段。或者,我們可以選擇哪些字段用一種格式,而另外的字段用其它的格式,如,使用不同的顏色。
使用一個簡單的If...,循環就可以給我們提供更多的資料庫控制權利。首先讓我們來列印有關Windows NT產品的記錄:

<TABLE BORDER=0 WIDTH=600>
<TR><TD COLSPAN=4 ALIGN=CENTER><FONT SIZE="+1"<<B>Windows NT Products</B></FONT></TD></TR>
<%
  While NOT objRec.EOF
  If objRec("OS") = "Windows NT" THEN ' specifies the criteria
Response.Write "<TR><TD BGCOLOR=""#FFFF66"">" & objRec("ProductID") & "</TD>"
Response.Write "<TD>" & objRec("SKU") & "</TD>"
Response.Write "<TD>" & objRec("Name") & "</TD>"
Response.Write "<TD>" & objRec("File") & "</TD></TR>"
  end if
  objRec.MoveNext
  Wend
%>
</TABLE>
添加一個記錄
一旦你開始使用recordset和ASP了,你就會十分希望能夠通過網路將資料添加到資料庫中去。添加內容是非常重要的,如,當你需要你的網頁瀏覽者留下它們的觀點和看法,或者,當你想要進行管理更新的時候。

下面的代碼打開了一個recordset,這個recordset是有關一個有著書本和它們作者名字的資料庫表格。你可能曾經看到過這個,但是這次,最後三個說明書定義的指針類型是不同的:adOpenStatic、adLockOptimistic、adCmdTable:
<%   ' database connection already made; code not shown here
Set objRec = Server.CreateObject ("ADODB.Recordset")
  objRec.Open "books"、bookdb、adOpenStatic、adLockOptimistic、adCmdTable
%>
(如果你沒有使用adovbs.inc的複製檔案,第三行應該為:objRec.Open "books"、bookdb、3,3,2).
recordset現在就準備好接收資料了,你只需要告訴它添加什麼。在這個情況下,假設我們從表格中取出變量:strBookTitle和strBookAuthor。我們的table、books有兩個字段,稱作Title 和 Author,所以我們可以通過使用下面的語句來添加一個新的記錄:
<%
objRec.AddNew
  ObjRec("Title") = strBookTitle
  objRec("Author") = strBookAuthor
  objRec.Update
%>
strBookTitle和strBookAuthor代表值,通常被用戶訪問。如果你只是想測試add功能,你可以給title和author添加一個變量──只是需要記住使用引號。在你第一次使用它的時候,你可能會立即打開你的資料庫,以確保更新的發生。
Recordset類型
在顯示的objRec.Open例子中,你會發現在末尾有0,1,2的字樣。這些數字代表不同的指針類型。你是用的類型依賴於你將使用它來幹什麼。例如,如果你不需要修改或增加任何的記錄,你可以使用一個Lock類型。而當你計劃要修改或者更新資料庫的時候,你所選擇的類型就會不同。
0,1,2 實際上代表:
adOpenForwardOnly、adLockReadOnly、adCmdTable
當然,如果在你的服務器上已經有了adovbs.inc的備份,那麼,你也可以不使用數字,直接使用這些單詞。adovbs.inc 包括了這三個常量和其它常量的一個列表。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

本論壇為非營利之網路平台,所有文章內容均為網友自行發表,不代表論壇立場!若涉及侵權、違法等情事,請告知版主處理。


Page Rank Check

廣告刊登  |   交換連結  |   贊助我們  |   服務條款  |   免責聲明  |   客服中心  |   中央分站

手機版|中央論壇

GMT+8, 2026-7-22 06:58 , Processed in 0.038659 second(s), 16 queries .

Powered by Discuz!

© 2005-2015 Copyrights. Set by YIDAS

快速回復 返回頂部 返回列表