top
Loading...
個人主頁的數據庫解決方案ASP
eNet學院


如今,CGI日漸衰落,ASP大行其道,大有取而代之之勢。對個人主頁制作者而言,CGI也確實太復雜了,尤其是在數據庫的操
作上,繁復無比讓人望而生畏。相較而言, ASP則簡單得多。其面向對象的思想,將復雜的底層操作掩蓋,只留下簡單的調用接
口。對數據庫的操作更是將它的優點體現得淋漓盡致。

本文將簡單介紹在個人主頁中運用ASP連接數據庫,實現動態網頁。相信您在讀完本文后,您的主頁將更加精彩。

1.在ASP中查詢ACCESS 數據庫

ASP能讓我們用簡單的方法在網頁中查詢、更新數據庫。下面將給出的例子用的是MS ACCESS DATABASE,但是其操作的原理卻
可同樣地運用在任何支持ODBC的數據庫上。(之所以選擇ACCESS,是因為它容易操作,且被廣泛使用,對大多數的中小型項目而
言,ACCESS無疑是最好的選擇。)

先用ACCESS建立一個數據表如下:

用戶編號 姓名 城市 電話號碼

1 張三 武漢 027-84713858

2 李四 北京 010-99581426

3 王五 上海 021-85541253

再請看下面的一段例子:

<%

SET DBCONNECTION=SERVER.CREATEOBJECT(“ADODB.CONNECTION”)

DBCONNECTION.OPEN “DSNNAME”

SQLQUERY=“SELECT * FROM CUSTOMERS”

SET RECUSTIONMERLIST=DBCONNECTION.EXECUTE(SQLQUERY)

%>

< CENTER>

< TABLE BORDER=1>

< % DO WHILE NOT RECUSTOMERLIST.EOF %>

< TR>

< TD><%=RECUSTOMERLIST(“客戶編號”)%>< /TD>

< TD><%=RECUSTOMERLIST(“姓名”)%>< /TD>

< TD><%=RECUSTOMERLIST(“城市”)%>< /TD>

< TD><%=RECUSTOMERLIST(“電話號碼”)%>< /TD>

< /TR>

< % RECUSTOMERLIST.MOVNEXT LOOP %>

< /TABLE>

< /CENTER>

可以看到,ASP的語法是VBSCRIPT,其面向對象的思想也與VB相類似,所以,只要您初通VB或者VBSCRIPT,那ASP可以很容易
地上手。

上面的一部分可以說是ASP中ADO的精髓所在,下面我們討論一下代碼的內容<%和%>是ASP代碼的開始和結束標志。服務器在
返回用戶請求時,先將<%和%>中的內容解釋成為標準的html代碼,再將它發送到客戶瀏覽器。存取數據庫時,首先要建立連接,
也就是聲明一個CONNECTION類的實例(對象),然后運用CONNECTION類的OPEN方法,將連接對象連接到一個ODBC數據源上,在上例
中就是DSNNAME,這是一個DSN。至于什么是DSN,后面將有介紹,在此先按下不表。到此,數據庫的連接就已經完成了,下面要進
行的是數據庫的操作。

操作也是很簡單的,先定義一個SQL語句字串,然后調用CONNECTION的EXECUTE方法執行,執行的結果儲存在一個RECORDSET類
(可以看成是一個臨時存放數據的表)的對象中,在上例中是RECUSTOMERLIST。這樣,數據庫的查詢調用也就完成了,再只需將它輸
出即可。

在DO WHILE ...LOOP的循環中輸出時,調用ASP中RESPOND對象的WRITE方法,一般可以簡寫為“=”。而語句
RECUSTOMERLIST(字段名)返回的是當前紀錄對應字段的值。最后調用的是RECORDSET類的MOVENEXT方法,將紀錄指針移到下一個
紀錄,反復執行,直到RECUSTOMERLIST的EOF(文件尾)為真。這樣,就將返回的查詢結果輸出了。

上面所講的只是一點ASP數據存取的基本知識,但我們已可略窺ASP強大的功能。

2.現在我們可以通過ASP來存取數據庫,實現動態效果。但還有一個問題:現在提供ASP支持的個人免費網頁,大多數并不提供
數據庫的支持。也就是說,你無法在它的數據庫系統中建立并擁有自己的數據庫。若用本地數據庫,你也無法配置服務器主機中的
ODBC,無法得到你本地數據庫的DSN,也就不能通過ASP來存取數據庫了。怎么解決這個問題呢?下面的討論將給出一個簡單的方
法,那就是FILE DSN。

首先解釋幾個名詞

DSN:根據MICROSOFT的官方文檔,DSN的意思是“應用程序用以請求一個連到ODBC數據源的連接(CONNECTION)的名字”,換句
話說,它是一個代表ODBC連接的符號。它隱藏了諸如數據庫文件名、所在目錄、數據庫驅動程序、用戶ID、密碼等細節。因此,當
建立一個連接時,你不用去考慮數據庫文件名、它在哪兒等等,只要給出它在ODBC中的DSN即可。

FILE DSN: 當我們討論這個問題時,先看看其他的DSN類型

SYSTEM DSN:這種DSN可以被任何登錄到系統中的用戶使用。

USER DSN:這是為特定用戶建立的DSN。只有建立這個DSN的用戶才能看到并使用它。在上面的兩種情況中,DSN的細節都儲存
在系統的注冊表中。

知道了上面的預備知識后,讓我們來看看什么是FILE DSN。FILE DSN 將DSN的細節內容存貯在一個文件中,而不是存貯在系
統注冊表中。這個文件是簡單的文本文件,用.dsn作為擴展名。

雖然這聽起來挺簡單,但你需要知道那些組成DSN文件的參數。下面給出一個簡單的用來存取ACCESS的DSN文件,

---- file.dsn ----

[ODBC]

DRIVER=Microsoft ACCESS Driver (*.mdb)

ReadOnly=0

UserCommitSync=Yes

Threads=3

SafeTransactions=0

PageTimeout=5

MaxScanRows=8

MaxBufferSize=512

ImplicitCommitSync=Yes

FIL=MS ACCESS

DriverId=25

將它命名為file.dsn,當然,你可根據你的愿意改名。

建立了這個文件后,工作已完成了一半。下面的工作是建立一個連接。當用一個SYSTEM DSN時,建立連接只要簡單地引用
SYSTEM DSN:

conn.open “mydsn”(conn是連接對象的名字)

當應用如上的FILS DSN 時,你需要加入更多的參數來說明。

Conn.open “filedsn=c:webdirfile.dsn;DBQ=c:DATABASEmydb.mdb;UID=admin;PWD=admin;”

C:webdir是.dsn文件所在的目錄,它需要用文件的物理路徑。你可以用SERVER.MAPPATH方法來得到。如Server.MapPath
(“/mysite/file.dsn”)。同樣,對于DBQ參數也需如此。UID和PWD參數是可選的。

簡而概之,要建立一個可重用的FILE DSN

1)用DSN參數建立一個以dsn為擴展名的文本文件。

2)用FILEDSN和DBQ參數建立連接,你可以用SERVER.MPAPATH來得到物理路徑。

3)只需更改DBQ、UID和PWD參數,就可將這個FILE DSN用到任何ACCESS數據庫上。

需要注意的是,對其他非ACCESS類型的數據庫需要應用不同的參數值和一些附加的參數。(武漢 Netwalker)

北斗有巢氏 有巢氏北斗