當(dāng)前位置:首頁文章首頁 IT學(xué)院 IT技術(shù)

非數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)對象的實(shí)例及說明

作者:  來源:  發(fā)布時(shí)間:2011-6-15 15:23:37  點(diǎn)擊:

本文提供給大家學(xué)習(xí)分享的是關(guān)于ASP中非數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)對象的實(shí)例及說明,希望能給大家?guī)韼椭騿l(fā)。

有些時(shí)候,在資源有限及功能簡單的情況下,利用文件管理本身就能很好的實(shí)現(xiàn)一個(gè)系統(tǒng),又何必非用數(shù)據(jù)庫不可呢?

  好的,開說ASP程序,ASP程序強(qiáng)大的原因主要在于COM對象的擴(kuò)展,所以在一陣的頭腦風(fēng)暴后,打起了一套組合拳:Scripting.FileSystemObject,Scripting.Dictionary以及Msxml2.DOMDocument.4.0。

  下面就以文件管理程序?yàn)槔,對?shí)現(xiàn)做簡要說明:

  首先,是構(gòu)思。

  1. 管理的數(shù)據(jù)對象是文件對象,而文件對象可以對應(yīng)到XML中的某個(gè)結(jié)點(diǎn)

  2. 文件對象的結(jié)構(gòu),可以自行定義

  3. 文件對象的增加、刪除、修改以及查詢

  XML中充分利用Xpath,實(shí)現(xiàn)查詢比較簡單,所以構(gòu)思后問題主要應(yīng)該歸結(jié)為XML結(jié)點(diǎn)的增刪改的問題,以及對象結(jié)構(gòu)的定義。增刪改不必多說,關(guān)鍵是對象結(jié)構(gòu)的自定義(在面向?qū)ο笾芯褪穷惖穆暶鳎?/p>

  接下來,是實(shí)現(xiàn)。

  一是結(jié)構(gòu)文件

  這里結(jié)構(gòu)包括:英文名字,中文顯示名,類型,顯示模版(或參照),默認(rèn)值等

  其實(shí)就是類似schema的東西,然后把這些結(jié)構(gòu)保存在一個(gè)文件中,很多操作時(shí)就可以在循環(huán)中自動(dòng)處理了,比如顯示一個(gè)文件時(shí),就可以按照這個(gè)結(jié)構(gòu)來顯示所有屬性字段。

  如下為一個(gè)結(jié)構(gòu)文件documentx.dna的示范內(nèi)容:

*/DOCS=文件

*/DOCS/@VERSION=版本%%STRING%%[NUM].[NUM].[NUM].[NUM]%%1.0.0.0

*/DOCS/DOC=文件

+/DOCS/DOC/@ID=標(biāo)識(shí)%%STRING%%%%=UniqueID()

+/DOCS/DOC/@HOT=人氣%%NUM%%%%0

/DOCS/DOC/TITLE=標(biāo)題

/DOCS/DOC/DEPARTFROM=來文單位%%DICTIONARY%%department%%

/DOCS/DOC/@DONE=是否處理完畢%%BOOL%%%%

需要說明的是英文名稱采用Xpath的方式,是為了方便XML處理。

英文名稱前加*號(hào)表示為系統(tǒng)字段,同時(shí)也是非文件對象的屬性字段

英文名稱前加+表示該字段對用戶來說是只讀的,其值由系統(tǒng)指定。

另外前加*或者加+號(hào)也好,也有防止誤刪的原因,因?yàn)?號(hào)或+號(hào)是不會(huì)顯示給用戶的。

用=號(hào)分隔英文名稱與其他部分,而其他部分中用%%分隔,依次為中文顯示名,該項(xiàng)類型,顯示模版(或參照),默認(rèn)值。

  需要說明的是類型,如果類型為DICTIONARY的話,顯示模版(或參照)或參照的為具體的DICTIONARY文件,DICTIONARY的保存形式,形同Delphi中TstringList的保存形式,用=號(hào)把關(guān)鍵字與值分隔:

CS1=測試單位1

CS2=測試單位2

  二是利用新建一個(gè)文件,說明顯示的問題

先看示范文件:

<% @LANGUAGE=VBSCRIPT %>

<%

Dim sKey, sValue, Sign, Pos, AttrID, Values, F, FName, Count

%>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<meta http-equiv="Content-Language" content="zh-cn">

</head>

<body>

<form method="POST" action="Documents!Save.asp">

<table border="0" width="100%" cellpadding="0" style="border-collapse: collapse">

       <tr>

              <td bgcolor="#C0C0C0"><b>新建</b></td>

       </tr>

       <tr>

              <td>

              <table border="1" width="100%" cellspacing="0" cellpadding="0" style="border-collapse: collapse" bordercolor="#000000">

                     <tr>

                            <td width="10%">項(xiàng)</td>

                            <td>值</td>

                     </tr>

<%

'Count = 0

'DOCUMENTX為Scripting.Dictionary對象,為documentx.dna的內(nèi)容

For Each sKey In DOCUMENTX       

  Sign = Left(sKey, 1)

  If Sign<>"*" Then

    sValue = DOCUMENTX.Item(sKey)

    Values = Split(sValue & "%%%%%%", "%%")

    Pos = InStrRev(sKey, "/")

    AttrID = Right(sKey, Len(sKey) - Pos)

    If Left(AttrID,1)="@" Then

      AttrID = Mid(AttrID, 2) & "_INLINE"     '也就是說@為一般為內(nèi)置屬性

    End If

    AttrID = "ATTR_" & AttrID

%>

                     <tr>

                            <td width="10%"><%=Values(0)%></td>

                            <td>

首頁 上一頁 [1] [2] [3] [4]  下一頁 尾頁

相關(guān)軟件

相關(guān)文章

文章評論

軟件按字母排列: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z