在ASP程序中訪問Access數(shù)據(jù)庫
發(fā)表時間:2024-06-09 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]在基于微軟IIS/PWS的網(wǎng)絡(luò)平臺上,通過服務(wù)器端運行的ASP程序來訪問后臺數(shù)據(jù)庫,是一種最常見的模式了。而對于小型的數(shù)據(jù)庫應(yīng)用需求,微軟的Access數(shù)據(jù)庫,應(yīng)該是與ASP程序配套使用的首選。由于Access數(shù)據(jù)庫的ODBC驅(qū)動程序支持的SQL指令全,執(zhí)行效率高,所以Access后臺數(shù)據(jù)庫+AS...
在基于微軟IIS/PWS的網(wǎng)絡(luò)平臺上,通過服務(wù)器端運行的ASP程序來訪問后臺數(shù)據(jù)庫,是一種最常見的模式了。而對于小型的數(shù)據(jù)庫應(yīng)用需求,微軟的Access數(shù)據(jù)庫,應(yīng)該是與ASP程序配套使用的首選。由于Access數(shù)據(jù)庫的ODBC驅(qū)動程序支持的SQL指令全,執(zhí)行效率高,所以Access后臺數(shù)據(jù)庫+ASP服務(wù)器端程序+客戶端IE瀏覽器,是一個精練實用高效的組合模式。
在這種使用模式中,ASP程序無疑是最重要的,是溝通客戶端和后臺數(shù)據(jù)庫之間的橋梁。在ASP程序中,通過VB Script,建立對Access數(shù)據(jù)庫的連接,是客戶能夠訪問后臺數(shù)據(jù)庫的前提。
一、建立Access數(shù)據(jù)庫連接的常用方法
在ASP中建立對Access數(shù)據(jù)庫連接的一般格式如下:
它的各步驟及參數(shù)意義如下:
第一行程序:利用Server對象的MapPath函數(shù),取得要打開數(shù)據(jù)庫的完整的文件路徑,并存儲在變量DbPath中。這其中,數(shù)據(jù)庫名是我們需要指定的參數(shù),應(yīng)該用我們要打開的數(shù)據(jù)庫的實際名稱替代。如果數(shù)據(jù)庫名是直接作為常量出現(xiàn),要用引號將其括起來,并且不能丟掉擴展名。例如數(shù)據(jù)庫是Test.mdb,則該行程序成為:DbPath=Server.MapPath(“Test.mdb”)。
第二行程序:建立一個ADO對象集中的Connection對象,也即連接對象。這是建立數(shù)據(jù)庫連接的初始步驟。執(zhí)行這行程序后,Conn成為一個連接對象。
第三行程序:利用連接對象Conn的Open方法打開一個指定的數(shù)據(jù)庫。因為我們要打開的是Access數(shù)據(jù)庫,所以要指定ODBC驅(qū)動程序參數(shù),表示要透過Access的ODBC驅(qū)動程序來訪問數(shù)據(jù)庫:driver={Microsoft Access Driver (*.mdb)};。另一個參數(shù)dbq= & DbPath,運算后等效于dbq=Server.MapPath(數(shù)據(jù)庫名) ,是利用了第一行的Server.MapPath(數(shù)據(jù)庫名)函數(shù),用來指定要打開的數(shù)據(jù)庫文件。到這里,就已經(jīng)打開了數(shù)據(jù)庫名指定的數(shù)據(jù)庫。如果數(shù)據(jù)庫名是“test.mdb”,則打開Access數(shù)據(jù)庫Test.mdb。在這一行里指定的參數(shù),要嚴(yán)格按照格式原樣寫出,不能省略或改動,也沒有可變參數(shù)。
第四行程序:建立一個ADO對象集中的Recordset對象,以便利用Recordset對象操作數(shù)據(jù)庫(當(dāng)然,這只是對數(shù)據(jù)庫操作的多種方式之一)。執(zhí)行這行后,rs就成為一個Recordset對象。
第五行程序:利用rs對象的Open方法打開數(shù)據(jù)庫中的數(shù)據(jù)表。這其中有四個參數(shù),其意義如下:
數(shù)據(jù)表名或SQL指令串:在這個參數(shù)里指定要打開的數(shù)據(jù)庫內(nèi)的數(shù)據(jù)表名稱,或者是用SQL的Select指令串確定的數(shù)據(jù)表的指定范圍數(shù)據(jù),例如,數(shù)據(jù)庫Test.mdb中有數(shù)據(jù)表Number,則該參數(shù)成為“Number”,注意引號不能丟;若想打開數(shù)據(jù)表Number中xh字段值小于90的數(shù)據(jù)記錄,則該參數(shù)可能成為如下的形式:
“Select * From Number Where xh < 90”。
Connection對象:指定已經(jīng)打開的數(shù)據(jù)庫的Connection對象,在這里固定是Conn,注意無須引號的。
Recordset類型:表示打開數(shù)據(jù)表的方式,有四種選擇。數(shù)字0表示只讀方式,且當(dāng)前記錄只能下移;數(shù)字1表示可讀寫方式,當(dāng)前記錄可自由上下移動,但不能及時看到別的用戶建立的新記錄,除非重新啟動;數(shù)字2表示可讀寫方式,當(dāng)前記錄可自由移動,而且可以及時看到別的用戶增加的新記錄;數(shù)字3表示只讀方式,但當(dāng)前記錄可以自由移動。一般選擇2為好,除非為了禁止數(shù)據(jù)被修改。
鎖定類型:這個參數(shù)指定數(shù)據(jù)庫的鎖定功能。因為網(wǎng)絡(luò)上的數(shù)據(jù)庫都是多用戶的,很可能同時有多個用戶在操作數(shù)據(jù)庫。為了避免錯誤,讓同一時間只可能有一個用戶修改數(shù)據(jù),就要用鎖定功能。有四種選擇:數(shù)字1表示只讀方式鎖定,用戶不能更改數(shù)據(jù);數(shù)字2表示悲觀鎖定,當(dāng)一個用戶用rs對象開始修改數(shù)據(jù)時就鎖定數(shù)據(jù)庫,直到用戶用rs.Update更新記錄后,才解除鎖定;數(shù)字3表示樂觀鎖定,只有在數(shù)據(jù)寫入數(shù)據(jù)庫中時候才鎖定,不保險,慎用!數(shù)字4表示批次樂觀鎖定,只有在使用rs.UpdateBatch成批更新數(shù)據(jù)時候才鎖定數(shù)據(jù)記錄。屬于很少使用的。一般地,使用悲觀鎖定比較安全,但是效率要低些。
[page_break] 二、使用Recordset對象操作數(shù)據(jù)
用上面的方法打開數(shù)據(jù)庫,是利用了Recordset對象建立的數(shù)據(jù)庫連接,然后的對數(shù)據(jù)操作,也要使用該對象。
用rs.open “數(shù)據(jù)表名”,Conn,2,2 方式打開數(shù)據(jù)表,就可以方便的對數(shù)據(jù)進(jìn)行操作:
常見的操作對象:
rs.addnew :添加一個新記錄在數(shù)據(jù)表末尾。
rs.delete :刪除當(dāng)前記錄。
rs.eof :判斷是否已過最后記錄。
rs.bof :判斷是否移過首記錄。
rs.update :數(shù)據(jù)修改生效。
rs(“字段名”):當(dāng)前記錄指定字段的值。
從數(shù)據(jù)表中提取數(shù)據(jù):用x=rs(“字段名”)的格式,提取數(shù)據(jù)表中當(dāng)前記錄指定字段的值。
向數(shù)據(jù)表中填入或修改數(shù)據(jù):用rs(“字段名”)=數(shù)據(jù)值或變量的方式,修改當(dāng)前記錄指定字段的值。
三、使用SQL指令操作數(shù)據(jù)庫
在使用SQL指令對數(shù)據(jù)庫進(jìn)行操作時,要用如下方式打開數(shù)據(jù)庫和操作:
四、使用DSN連接數(shù)據(jù)庫
在以上連接數(shù)據(jù)庫的方式中,都是在程序中指定數(shù)據(jù)庫,指定ODBC驅(qū)動程序。如果數(shù)據(jù)源有變化,就需要修改程序。如果在系統(tǒng)級別上,預(yù)先定義好數(shù)據(jù)源DSN,就可以避免這個麻煩。
在定義DSN的過程中,就已經(jīng)指定好了數(shù)據(jù)源需要的ODBC驅(qū)動程序,也指定好了數(shù)據(jù)庫文件的實際路徑和名字,我們在程序中,只需要引用預(yù)先定義的數(shù)據(jù)源名DSN即可。
設(shè)定義好的DSN為test,則打開數(shù)據(jù)庫的方式為:
五、結(jié)束語
在ASP程序中,建立數(shù)據(jù)庫的連接和訪問數(shù)據(jù)庫,有很多方式和技術(shù)細(xì)節(jié),在此難以一一詳述。實際上,對SQL Server數(shù)據(jù)庫,DBF數(shù)據(jù)庫,文本文件,電子表格文件等,也都可以很方便的打開和訪問,與對Access數(shù)據(jù)庫的訪問大同小異而已。如果說方便,Access應(yīng)該是首選。如果考慮安全保密性,SQL數(shù)據(jù)庫更好些。使用系統(tǒng)數(shù)據(jù)源DSN的方式建立對數(shù)據(jù)庫的連接,具有更大的靈活性,也更簡便些。