ASP中非数据库实现数据对象的定义及处理

syf6380332

syf6380332

2016-01-29 17:07

ASP中非数据库实现数据对象的定义及处理,ASP中非数据库实现数据对象的定义及处理

说非数据库方式,有些托大,但在没有数据库的情况下,也算给了一个锻炼的好机会,更何况本人对有事没事就整数据库玩的方式是深恶痛绝,有些时候,在资源有限及功能简单的情况下,利用文件管理本身就能很好的实现一个系统,又何必非用数据库不可呢?
好的,开说 ASP 程序, ASP 程序强大的原因主要在于 COM 对象的扩展,所以在一阵的头脑风暴后,打起了一套组合拳: Scripting.FileSystemObject , Scripting.Dictionary 以及 Msxml2.DOMDocument.4.0 。
下面就以文件管理程序为例,对实现做简要说明:

首先,是构思。

1. 管理的数据对象是文件对象,而文件对象可以对应到 XML 中的某个结点

2. 文件对象的结构,可以自行定义

3. 文件对象的增加、删除、修改以及查询

XML 中充分利用 Xpath ,实现查询比较简单,所以构思后问题主要应该归结为 XML 结点的增删改的问题,以及对象结构的定义。增删改不必多说,关键是对象结构的自定义(在面向对象中就是类的声明)。

接下来,是实现。

一是结构文件

这里结构包括:英文名字,中文显示名,类型,显示模版(或参照),默认值等

其实就是类似 schema 的东西,然后把这些结构保存在一个文件中,很多操作时就可以在循环中自动处理了,比如显示一个文件时,就可以按照这个结构来显示所有属性字段。

如下为一个结构文件 documentx.dna 的示范内容:

*/DOCS= 文件

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

*/DOCS/DOC= 文件

+/DOCS/DOC/@ID= 标识 %%STRING%%%%=UniqueID()

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

/DOCS/DOC/TITLE= 标题

/DOCS/DOC/DEPARTFROM= 来文单位 %%DICTIONARY%%department%%

/DOCS/DOC/@DONE= 是否处理完毕 %%BOOL%%%%

需要说明的是英文名称采用 Xpath 的方式,是为了方便 XML 处理。

英文名称前加 * 号表示为系统字段,同时也是非文件对象的属性字段

英文名称前加 + 表示该字段对用户来说是只读的,其值由系统指定。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/asp/)

另外前加 * 或者加 + 号也好,也有防止误删的原因,因为 * 号或 + 号是不会显示给用户的。

用 = 号分隔英文名称与其他部分,而其他部分中用 %% 分隔,依次为中文显示名,该项类型,显示模版(或参照),默认值。

需要说明的是类型,如果类型为 DICTIONARY 的话,显示模版(或参照)或参照的为具体的 DICTIONARY 文件, DICTIONARY 的保存形式,形同 Delphi 中 TstringList 的保存形式,用 = 号把关键字与值分隔:

CS1= 测试单位 1

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/asp/)

CS2= 测试单位 2

二是利用新建一个文件,说明显示的问题

先看示范文件:

<% @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="#C 0C 0C 0"><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%"> 项 </td>
<td> 值 </td>
</tr>
<%
'Count = 0
'DOCUMENTX 为 Scripting.Dictionary 对象,为 documentx.dna 的内容
For Each sKey In DOCUMENTX
Sign = Left(sKey, 1)
If Sign<>"*" Then
sValue = DOCUMENTX.Item(sKey) [next]
Values = Split (sValue & "%%%%%%", "%%")
Pos = InStrRev(sKey, "/")
AttrID = Right(sKey, Len(sKey) - Pos)
If Left(AttrID,1)="@" Then
AttrID = Mid(AttrID, 2) & "_INLINE" ' 也就是说 @ 为一般为内置属性
End If
AttrID = "ATTR_" & AttrID
%>
<tr>
<td width="10%"><%=Values(0)%></td>
<td>
<%
If Sign="+" Then ' 如果为只读属性
%>
<input type="hidden" name="<%=AttrID %>" value="" /> 系统计算: <%=Values(3) %>
<%
Else
' 按照类型进行显示
If Values(1)="BOOL" Then
Response.Write "<input type=""checkbox"" name=""" & AttrID & """ value=""1"" />"
Else
If Values(1)="DICTIONARY" Then

展开更多 50%)
分享

猜你喜欢

ASP中非数据库实现数据对象的定义及处理

ASP
ASP中非数据库实现数据对象的定义及处理

ASP中优化数据库处理

ASP
ASP中优化数据库处理

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用asp处理access数据库

ASP
用asp处理access数据库

Oracle数据库数据对象分析

电脑网络
Oracle数据库数据对象分析

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

在ASP中优化数据库处理

ASP
在ASP中优化数据库处理

数据库远程控制的ASP实现

ASP
数据库远程控制的ASP实现

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

asp组件上传

asp组件上传

呕心沥血制作《艾诺迪亚3》图文流程攻略(一)

呕心沥血制作《艾诺迪亚3》图文流程攻略(一)
下拉加载更多内容 ↓