国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

ASP訪問多個Access數(shù)據(jù)庫的簡單方法

2018-12-18 01:08白健
電腦知識與技術 2018年27期

白健

摘要:指出基于ASP+Access架構的網(wǎng)站項目中,采用多數(shù)據(jù)庫設計,能有效彌補Access數(shù)據(jù)庫的一些局限性。給出了在同一ASP頁面中訪問多個Access數(shù)據(jù)庫的三種簡單方法: 利用ASP+Cookie技術訪問不同數(shù)據(jù)庫;利用FOR循環(huán)結構+Cookie技術同時訪問多個數(shù)據(jù)庫;利用FOR循環(huán)結構+FSO組件同時訪問多個數(shù)據(jù)庫。給出了以上方法的ASP代碼。

關鍵詞:ASP;Access;多數(shù)據(jù)庫;網(wǎng)站建設

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2018)27-0012-02

Several Simple Methods for ASP to Access Multiple Access Databases

BAI Jian

(Department of Basic Courses, Hebei Construction Material Vocational & Technical College, Qinhuangdao 066004, China)

Abstract: The paper points out that the use of multi-database design in website projects Based on ASP+Access architecture can effectively make up for some limitations of Access databases. Three simple methods to access multi-databases in same ASP pages are presented: Using the FOR-loop-structure and Cookie technology to access multi-database at the same time; Using the FOR- loop-structure and FSO component to access multi-database at the same time. The ASP code of the above methods is given.

Key words: ASP; Access databases; Multi-database; Website construction

1 概述

隨著互聯(lián)網(wǎng)+戰(zhàn)略的實施,越來越多的教師根據(jù)自己的工作實際,嘗試建立具有獨立知識產(chǎn)權的教學資源網(wǎng)站。由于ASP技術成熟,簡單易學;Microsoft Office是教師常用的辦公系統(tǒng),其集成的Access數(shù)據(jù)庫簡單好用;基于ASP+Access架構的網(wǎng)站架設簡單,空間服務商廣泛支持,適合非專業(yè)人員架設動態(tài)網(wǎng)站。因此,許多教師采用ASP+Access架構構建自己的教學資源網(wǎng)站。

但Access本身具有一定的局限性(見Microsoft Access軟件中的幫助信息),如:庫文件不能太大;最多只支持255個并發(fā)用戶,實際運行中支持的更少;單表記錄數(shù)不能太多,否則運行明顯變慢。為克服以上不足,采用ASP+Access架構開發(fā)項目時,把以往只使用一個核心數(shù)據(jù)庫的設計,改成使用多個同構數(shù)據(jù)庫設計,這些同構數(shù)據(jù)庫由系統(tǒng)根據(jù)后臺設置的數(shù)據(jù)類別動態(tài)生成。實踐證明,這一方法有效彌補了Access數(shù)據(jù)庫容量小、并發(fā)訪問用戶少等不足,并且增加了網(wǎng)站使用的智能性和廣泛性。

2 多數(shù)據(jù)庫的建立

項目網(wǎng)站中共設計兩類數(shù)據(jù)庫:一類是基本信息數(shù)據(jù)庫,只有一個,用于存儲數(shù)據(jù)類別、對應的核心數(shù)據(jù)庫編號、用戶登錄信息等基本信息,由后臺管理員管理;一類是核心數(shù)據(jù)庫,由多個數(shù)據(jù)庫組成,用于存儲網(wǎng)站提供的各種資源信息、網(wǎng)站用戶輸入的數(shù)據(jù)等,不同類別的數(shù)據(jù)單獨建庫,以編號區(qū)分,即本文所指的多數(shù)據(jù)庫。

在建立網(wǎng)站的核心數(shù)據(jù)庫時,首先根據(jù)實際需要建立模板數(shù)據(jù)庫,命名為Datamodel.mdb。運行時,系統(tǒng)根據(jù)管理員設置的不同數(shù)據(jù)類別,利用模板數(shù)據(jù)庫動態(tài)生成編號不同的系列同構數(shù)據(jù)庫,可分別命名為data11.mdb、data12.mdb、…,data21.mdb、data22.mdb、…,data31.mdb、data32.mdb、…,等等,數(shù)據(jù)庫名稱中的數(shù)字為基本信息庫中的數(shù)據(jù)類別編號,取1~99范圍內的半角英文數(shù)字。

這樣,就需要解決兩個問題:一是用戶在操作不同的數(shù)據(jù)類別時,需要訪問不同的數(shù)據(jù)庫;二是在數(shù)據(jù)統(tǒng)計時需要同時查詢多個數(shù)據(jù)庫。采用以下方法,較好地解決了以上問題,簡單易行,不需要太深的專業(yè)知識,特別適合非專業(yè)人員采用。

3 多數(shù)據(jù)庫的訪問方法

3.1 利用ASP+Cookie技術動態(tài)訪問不同數(shù)據(jù)庫

用戶訪問網(wǎng)站時,根據(jù)用戶選擇的數(shù)據(jù)類別不同,系統(tǒng)將對應的數(shù)據(jù)庫編號寫入Cookie(Reponse.cookies("userinfo")("chnum")=編號變量)。在數(shù)據(jù)庫連接文件中讀出Cookie中的編號,賦值給數(shù)據(jù)庫編號變量,根據(jù)編號變量建立相應數(shù)據(jù)庫的連接。這樣就實現(xiàn)了根據(jù)用戶選擇動態(tài)建立不同數(shù)據(jù)庫的連接。

連接文件conn.asp代碼如下:

<% dim chnum

chnum=Request.cookies("userinfo")("chnum")

db="data/data"&chnum;&".mdb"‘數(shù)據(jù)庫存儲路徑為data/

Set conn = Server.CreateObject("ADODB.Connection")

conn.Open "driver={Microsoft Access Driver (*.mdb)};pwd=;

dbq=" &Server.MapPath;(db)

%>

在訪問數(shù)據(jù)庫頁面建立查詢代碼如下(以訪問數(shù)據(jù)庫中的表result為例):

<!—#include file="inc/conn.asp"—>

<%

sql="select * from result order by snoasc"

setrs=server.createobject("adodb.recordset")

rs.open sql,conn,1,1

if not rs.eof then

toptotal=rs("toptotal")

end if

rs.close

setrs=nothing

%>

通過這種方法,實現(xiàn)了動態(tài)訪問不同數(shù)據(jù)庫的目的。

3.2 利用FOR循環(huán)結構+Cookie技術同時訪問多個數(shù)據(jù)庫

網(wǎng)站在統(tǒng)計數(shù)據(jù)時,要根據(jù)統(tǒng)計需要訪問多個乃至所有核心數(shù)據(jù)庫(data11.mdb、data12.mdb、…,data21.mdb、data22.mdb、…,data31.mdb、data32.mdb、…)。后臺管理員和用戶可能并不知道究竟有多少個數(shù)據(jù)庫,也不知道數(shù)據(jù)庫文件名。可利用ASP的FOR循環(huán)結構和瀏覽器的Cookie技術實現(xiàn)多個數(shù)據(jù)庫的同時查詢。

通過瀏覽器打開統(tǒng)計頁面,首先將基本信息數(shù)據(jù)庫中的所有數(shù)據(jù)類別對應的數(shù)據(jù)庫編號分別寫入Cookie。在數(shù)據(jù)庫連接文件中讀出Cookie中的編號值,賦值給數(shù)據(jù)庫編號變量,根據(jù)編號變量建立相應數(shù)據(jù)庫的連接。這樣就實現(xiàn)了動態(tài)建立多個數(shù)據(jù)庫的連接。

連接文件connmulti. asp代碼如下:

<%dim j,dbnum(99),connstr(99),conndb(99)

for j=1 to 99‘j的范圍可根據(jù)實際情況指定

coochnum=Request.dookies("userinfo")("chnum"&j;)‘從Cookie中讀出數(shù)據(jù)庫編號

if coochnum<>"" then ‘非空的為有效編號,數(shù)據(jù)庫存在,建立連接

dbnum(j)="data/data"&coochnum;&".mdb"

connstr(j) = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database;

password=;Data Source=" &Server.MapPath;(dbnum(j))

setconndb(j)=server.createobject("ADODB.CONNECTION")

conndb(j).open connstr(j)

end if

next

%>

在訪問數(shù)據(jù)庫頁面包含連接文件connmulti. asp,建立查詢代碼如下(以訪問數(shù)據(jù)庫中的表result為例):

<!—#include file="inc/connmulti.asp"—>

<%

score=0

for chnum1=1 to 99

if conndb(chnum1)<>"" then‘判斷是否建立了連接,對應連接文件中的conndb(j)。

sql="select * from result where sno='"&sno;&"' "

setrs=server.createobject("adodb.recordset")

rs.opensql,conndb(chnum1),1,1

if not rs.eof then

score=score +rs("toptotal")

end if

rs.close

setrs=nothing

end if

next

…%>

通過這種方法,實現(xiàn)了在一個ASP頁面訪問多個數(shù)據(jù)庫的目的。

3.3 利用FOR循環(huán)結構+FSO組件同時訪問多個數(shù)據(jù)庫

如果覺得使用Cookie技術比較麻煩,在建立多數(shù)據(jù)庫的連接時,可用FSO組件判斷數(shù)據(jù)庫是否存在,但需要遠程服務器支持FSO組件。

連接文件connmulti.asp代碼如下:

<% dimj,dbnum(99),connstr(99),conndb(99)

Set Fso=Server.CreateObject("Scripting.FileSystemObject")

for j=1 to 99

If Fso.FileExists(Serer.mappath("data/data"&j;&".mdb") then

dbnum(j)="data/data"& j &".mdb"

connstr(j) = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database password=;Data Source=" &Server.MapPath;(dbnum(j))

setconndb(j)=server.createobject("ADODB.CONNECTION")

conndb(j).open connstr(j)

end If

next

Set oFile=Nothing

Set oFso=Nothing

%>

在查詢頁面建立查詢代碼同3.2中的相應代碼,此處略。

這種方法要在所有數(shù)據(jù)庫都有效的情況下使用。如果路

徑中存在廢棄的數(shù)據(jù)庫,可能導致錯誤的結果。在這里仍可結合Cookie技術,以避免出錯。

4 結束語

以上方法均在實際項目中驗證通過,達到預期效果。實際項目中,可根據(jù)需要調整FOR循環(huán)變量的范圍,一般設置為1~99,就可滿足各學科教學資源網(wǎng)站的需要。當數(shù)據(jù)庫數(shù)量較多時,查詢的速度會有一定下降。但現(xiàn)在的計算機運行速度都很快,而且同時訪問多數(shù)據(jù)庫的頁面很少,因此,這樣的設計不會對網(wǎng)站的運行速度有太大的影響。如果同時查詢的數(shù)據(jù)庫個數(shù)很少,且數(shù)據(jù)庫名稱確定,則沒必要用以上方法,直接建立數(shù)據(jù)庫連接即可。

參考文獻:

[1] 劉瑞新.ASP網(wǎng)頁數(shù)據(jù)庫短訓教程[M].北京:機械工業(yè)出版社,2004年:205-237.

[2] 楊英潔.簡析ASP的數(shù)據(jù)庫連接[J].電腦知識與技術,2009(5):1031,1043.

[通聯(lián)編輯:王力]

乐都县| 肃南| 溆浦县| 梁平县| 米易县| 雷州市| 皮山县| 资中县| 迁安市| 南陵县| 九龙坡区| 新昌县| 团风县| 台东市| 阳原县| 齐河县| 山东| 汉沽区| 泰兴市| 临颍县| 攀枝花市| 德令哈市| 温宿县| 清新县| 莱州市| 磐安县| 南投县| 米泉市| 苍梧县| 侯马市| 特克斯县| 尉犁县| 建湖县| 饶平县| 中西区| 沈阳市| 眉山市| 礼泉县| 平利县| 曲靖市| 确山县|