`
yuanjinxiu
  • 浏览: 659712 次
文章分类
社区版块
存档分类
最新评论

Command命令详解

 
阅读更多


教程重点简述:Command命令的使用,批处理

Fireworks4COMMANDS(命令)功能祥解:Command在Fireworks3中才被引入.这个功能在很多方面为我们节省了大量的工作时间.同时它是完全开放的,对于精通Javascript脚本的又喜欢用FW制作Web应用图像的朋友来说这是再好不过的了,你完全可以根据自己的需求编写命令插件.而Command最为显著的功能是批量处理,有了这个好处,我们可以对各种类型的图形图像进行统一的效果操作.现在就让我们来了解这些知识吧.一,基础命令部分.首先,让我们来简单了解一下Fireworks4中基本的Command.见下表:Edit Command List... 编辑命令列表,在其中可以进行对命令的标题重新命名和删除的操作.Creati ve 创造性的Convert to Grayscale 转换到灰度色调.可以将场景中所有的元素转换成灰度级颜色Convert to Sepia Tone 转换到棕褐色调.可以将场景中所有的元素转换成棕褐色调.Create Picture Frame 创建相框.按照场景的大小格式创建影像框架.Doument 文件Center in Document 文档中心.选定某个元素使用该命令可以将元素定位在场景中心位置.Distribute to Layers 分配到层.针对同一层中的多个对象操作.当在某层中选择多个对象时使用该命令,可以分别为每个对象创建一个独立的层.Hide Other Layers 隐藏其他层.针对多个层操作.选定需要编辑的层,使用改命令可以将其他没有被选中的层进行隐藏操作.Lock Other Layers 锁定其他层.针对多个层操作.选定需要编辑的层,使用该命令可以将其他没有被选中的层进行锁定操作.Panel Layout Sets 面板布局.1024*768 在1024分辨率下的面板布局.1280*1024 在1280分辨率下的面板布局.800*600 在800分辨率下的面板布局.Rest Warning Dialogs 停止使用警告框..使用了该命令以后,那些令人讨厌的警告提示框将不会再出现了.Web WebCreate Shared Palette 创建共享颜料盒.针对外部的图像文件进行操作.选择该命令,找到一个外部的图像文件读入,然后将其保存为自定义的色盘.注意:不支持BMP格式的图像.接下来让我们看两个应用了命令的例子:见图1-4.

图1,是原始的图像.图2,我们使用了创建相框的命令.图3,圆形在最初的位置.图4,使用了文档中心的命令后圆形自动的转换导场景的中心位置. 二,命令插件的使用

FW最为显著的也最令人满意的一个功能就是第三方扩展功能的开放性.国内目前编写FW命令插件的人不多,但在国外的FW用户中自己编写命令插件的却为数不少,但是这需要有较深厚的Javascript脚本语言技能,所以对于那些只利用FW制作面向Web图像的用户来说没有大的用处.那么由于这些插件都是免费提供的,所以我们可以任意的下载使用它们从而扩展FW的功能.我们的网站上就积累了一部分较经典的命令插件,如果您需要可以下载使用.在这里我就简单的说明一下命令插件的安装于使用:插件的安装:打开下载回来的command,将其解压缩到Fireworks4/Configuration/Commands目录中.传统的完整路径应该是这样的: C:/Program Files/Macromedia/Fireworks 4/Configuration/Commands.这些插件格式都是.jsf文件,解压缩后启动Fireworks,在Commands菜单中就可以找到并且使用它们了.见图5.这个名为Dotted Line(虚线)的命令就是我下载的命令插件了.在这些命令插件中有一些是比较经典的,例如说"画螺旋曲线""使位图吸附到路径"这些都是我们推荐您使用的.

三,创建命令和批处理功能.

虽然我们不能编写插件,但是我们同样可以创造一些经常使用的拥有自己风格的命令.这令我们必须使用到一个平时不怎么起眼的面板" History"(历史).往往我们只是利用它来重复或者删除一些历史步骤,就忽视了它在创建命令这方面的重要功能.下面就我们来看看是怎样通过它来创建自定义命令的:1,例如说有我们要为不同文档内的许多文本创建同样一种效果,一步步的去重复并不为人所取.办法是这样的.首先选定一个文档内的文本为其创建Effect(效果).见图6-8.

图6是原始文本的样式 图7,我们为文本进行了填充并应用了一些效果.图8,最终的文本样式.2,创建完了文本效果,打开History(历史)面板,找到刚刚为文本进行填充和增加效果的步骤,按住Shift键逐个选中,然后按下右下角带有磁盘样式的标记.这时FW会自动的弹出一个警告提示框,告诉你将要对哪些历史步骤进行保存并且询问你是否继续.这种情况一般都是在你选择了保存多个历史步骤建立命令时发生,不必去理会它,点击OK继续.这是FW就会自动的弹出保存命令提示框了,在name栏中指定一个命令名称即可.完成命令的创建.见图9.-10图9,在历史面板中选择操作步骤纪录图10,为命令取一个名字.3,保存完毕,打开Command菜单我们就看到了这个自创建的命令了.现在,你就可以将它应用在不同文档不同的文本中了.需要说明的是,保存后的命令不仅仅对文本有效果,对场景中基于矢量的图像同样起作用.那么对位图而言,除了不能够为其填充颜色以外,其他的效果同样的有用.4,我们学会了怎样创建一个命令以后,批处理就变得浅显了.所谓批处理,其实就是同时为多个对象创建相同样式的效果.就拿我们刚刚建立的这个命令来说,假设现在场景中有10个文本要创建同样的效果,那么按住Shfit键,逐个选中这些元素,然后打开Commands菜单,应用保存的命令就可以为这些文本创建相同的效果,这就是批处理.当然,我们同样可以为不同的元素创建相同的效果,例如,场景中有一个文本,数个正方型和一个椭圆形,选中它们,应用命令即可.见图11-12.到这里为止,我们已经对关于Commands的知识有了较全面清晰的了解.最后必须给您提示的是:请注意有一些带有"╳"叉号标记的历史步骤是不能够被保存为命令的. 第四章 命令(.command)对象

 

4.1 search.command命令

4.2 write.command命令

4.3 dir.command命令

 

在DataTrans-1500操作界面中的资源目录树根下,存在三个命令(.command)对象,分别来完成下述操作:

search.command 检索操作命令。当查询者在浏览器上对DataTrans-1500的数据库进行检索时,系统在依据检索途径对象.from文件来构造SQL查询语句过程中,将参考此命令来构造复杂的SQL查询语句、结果集、输出格式等。

write.command 写库操作命令。系统管理员通过此命令的设置来完成对数据库的三种操作:装载数据、删除记录、重建索引。

dir.command 资源管理操作命令。查询者通过此命令来在浏览器上列出服务器的所有资源,包括文件夹和文件。

4.1 search.command命令

search命令是检索数据库并返回结果html页面的命令。

search命令对象定义了如何检索、检索后如何生成页面的线索信息。

所谓线索信息,就是说这里并不定义具体的操作对象,而是定义了操作对象的路径和名字。软件在执行search命令时,将通过search命令对象去搜索和利用那些对象,达到检索目的。

整个search.command配置文件,分为下面若干主要部分:

1)结果集定义

2)输出格式定义

4.1.1 结果集定义

结果集,定义了服务器将URL命令行表示的查询请求,转换为SQL语句过程所需要的配套参数和对象。

结果集定义命令为<recordset>。

所有<recordset>命令全部被包围在<recordsetdirectory>...</recordsetdirectory>体中。

search.command配置文件中,结果集定义部分举例如下:

<recordsetdirectory>

<recordset name=robot

union-into-phrase = "into %temptablename%"

statis = "select COUNT(*) as totalkey from %temptablename%"

catch-key-parameter-name = "recordset,word,link,match,from"

>

<recordset name=titlenumber

definition = "_TITLE varchar(255), _HITCOUNT int"

union-into-phrase = "into #temp"

segment-phrase = "and ( %@segment(/"[%[defaultsqldb]%/%[keys]%/%[recordid]%]/")%)"

after-union = "select keystring, SUM (hitcount) as hitnumber into %temptablename% from #temp group by keystring order by keystring drop table #temp "

statis = "select COUNT(*) as totalkey , SUM(hitnumber) as totalrec from %temptablename%"

catch-key-parameter-name = "recordset,word,link,match,from"

>

<recordset name=titlenumberpos

definition = "_TITLE varchar(255), _HITCOUNT int"

union-into-phrase = "into #temp"

after-union = "select keystring, SUM (hitcount) as hitnumber into %temptablename% from #temp group by keystring order by keystring drop table #temp "

statis = "select COUNT(*) as totalkey , SUM(hitnumber) as totalrec , pos = ( select COUNT(*) from %temptablename% where keystring <= %'word'% ) from %temptablename% "

catch-key-parameter-name = "recordset,word,link,match,from"

>

<recordset name=marcrecord

definition = "recid char(10), dbname varchar(32)"

union-into-phrase = "into %temptablename%"

statis = "select COUNT(*) as totalrec from %temptablename%"

subset-append-column = "select [%@sqldbfullpath(@columntext(/"dbname/"))%/%[marc]%/%[marc]%] as marc from %@columntext(/"dbname/")%..[%@sqldbfullpath(@columntext(/"dbname/"))%/%[marc]%] where [%@sqldbfullpath(@columntext(/"dbname/"))%/%[marc]%/%[recordid]%] = %'%%@columntext(/"recid/")%%'% "

>

<recordset name=marcrecordbyid

definition = "recid char(10), dbname varchar(32)"

union-into-phrase = "into %temptablename%"

statis = "select COUNT(*) as totalrec from %temptablename%"

catch-key-parameter-name = "recordid,dbname"

subset-append-column = "select [%@sqldbfullpath(@columntext(/"dbname/"))%/%[marc]%/%[marc]%] as marc from %@columntext(/"dbname/")%..[%@sqldbfullpath(@columntext(/"dbname/"))%/%[marc]%] where [%@sqldbfullpath(@columntext(/"dbname/"))%/%[marc]%/%[recordid]%] = %'%%@columntext(/"recid/")%%'% "

>

<recordset name=issue

definition = "itemid char(10), dbname varchar(32)"

union-into-phrase = "into %temptablename%"

statis = "select COUNT(*) as totalrec from %temptablename% "

catch-key-parameter-name = "dbname, itemid, year"

>

<recordset name=entity

definition = "itemid char(10), dbname varchar(32)"

union-into-phrase = "into %temptablename%"

statis = "select COUNT(*) as totalrec from %temptablename%"

catch-key-parameter-name = "dbname, itemid, issueloc"

>

<recordset name=copybar

definition = "itemid char(10), dbname varchar(32)"

union-into-phrase = "into %temptablename%"

statis = "select COUNT(*) as totalrec from %temptablename%"

catch-key-parameter-name = "recordset, word"

>

</recordsetdirectory>

每个结果集的定义放在<recordset>命令中。<recordset>命令的参数,定义了结果集的特性。

参数解释如下:

name参数

定义了结果集的名称。

definition参数

定义了结果集的字段构成。(暂不用)

union-into-phrase参数

定义了在union的第一个select语句内from子句前需要插入的部分SQL语句片断。系统管理员应当注意在相关的.from文件中,在定义SQL语句模板时,在恰当位置设置“/*into*/”文字帮助服务器定位into子句插入位置。

为什么需要定义这个插入语句片断,这个语句片断起何作用呢?

a)SQL查询语句的基本结构是:

select 列名列表

into 临时结果集表

from 被查询的表

where 查询条件

[...]

例如:

select id,marc into #temp from qk..marc where id = 1000000022

这个SQL查询语句的意思是:从qk库的marc表中,将满足条件id=1000000022的记录查出来,对命中的记录提取id和marc字段,将所有命中的记录存入临时表#temp中。

这样,检索操作所的到的结果集就保存在临时表#temp中了。

b)实际查询中,用户通常对DataTrans-1500服务器的查询是对服务器上所有逻辑数据库的SQL库查询,而不是专门对服务器上的某一个逻辑数据库SQL库进行查询。

为了方便多库查询后形成一个结果集,我们使用SQL语句中的union语句把多个select语句用连接起来,形成一个SQL语句。

例如,服务器上如果有三个SQL库qk1,qk2,qk3, 对服务器查询的union语句可以是:

select id,marc into #temp1 from qk1..marc where id < 1000000022

union all

select id,marc from qk2..marc where id = 1000000022

union all

select id,marc from qk3..marc where id > 1000000022

使用union语句联合起来后,产生结果集只有一个,即在第一个select语句中使用into子句,指定结果集输出的临时表,即此处的into #temp1。

c)在search.command命令对象的结果集构造办法的定义中,定义了将要用于插入的into 子句。插入的位置在select语句的输出列名定义和from子句之间。

d)服务器上实施多库查询的union语句在哪里?

实施多库查询的union语句是由各库中各自在检索命令对象中定义的select查询语句模板在需要查询时组合生成的。

在每个逻辑数据库中,都定义了SQL库的检索途径(.from)对象,配置了使用该检索途径产生不同结果集的不同的select查询语句模板。

在检索途径对象(.from),配置select语句模板时,用一个注释“/*into*/”标识出into子句可以插入的位置。一旦某个select语句在union语句的组合中处在了第一个select语句的位置,服务器就会将结果集定义中参数“union-into-phrase = ”定义的into子句插入到“/*into*/”所在的位置。

这样“union-into-phrase = ”参数的定义不仅帮助软件形成union语句,而且为用户提供了定义存放union语句结果集临时表表名的机会,增强了用户配置的灵活性。

after-union参数

定义了union语句执行完后,进一步归并key用到的SQL语句。

多库查询时,UNION语句的各select语句是分别对各自的库进行查询,并且独立进行归并统计。这样,union语句产生的检索结果虽然成为一个结果集,但没有统一归并。从语句功能上看,union语句也做不到统一归并。

而对于一个完整的结果集,必须进行统一归并。所以,本参数定义了UNION语句之后,进一步对结果集进行统一归并的SQL语句。

after-union语句通常是多条SQL语句书写在一起的,例如search.command的“titlenumber”结果集的after-union参数定义中就是两条SQL语句:

after-union = select keystring, SUM (hitcount) as hitnumber

into %temptablename% from #temp group by keystring

order by keystring

drop table #temp

其中,一条语句为:

select keystring, SUM (hitcount) as hitnumber into %temptablename%

from #temp group by keystring order by keystring

另一条语句是:

drop table #temp

第一条语句中,“%temptablename%”是宏,它是以永久性临时表形式缓存的最终形式的结果集,运行时该宏被系统提供的永久性临时表名(如“tempdb..srch1”等)替换。语句中的“#temp”是上一步的union语句查询产生的临时结果集。

注意:称它为临时结果集,是因为这个临时表“#temp”中保存的结果集是需要由after-union语句进一步进行统一归并的结果集。归并后,这个临时表立即被下一条语句“drop table #temp”彻底删除。

after-union语句的第一条语句所执行的查询,就是对union语句产生的临时结果集所进行统一归并。语句中“from #temp”子句指定查询对象是“#temp”临时表;查询结果送入系统自动产生的永久性临时表;“order by keystring”子句对键项keystring进行排序;“group by keystring”子句按排序后的键项keystring进行归并;查询输出字段是keystring 和 统计求和字段SUM(hitcount),因而键项得到了归并、各键项的命中数量也得到了归并统计。这时产生的结果集是最终形式的结果集。

after-union语句虽然是独立的语句,但是是和union语句作为同一次提交SQL Server的。

statis参数

定义了统计结果集命中条数的语句,软件将这个语句输出的第一行内的各个字段内容以环境变量方式输送给构造动态页面的DTScript程序。服务器对这个SQL语句,要求只产生一行结果,列数不限。

浏览器在显示结果集内容时,单个页面只能显示结果集的一个局部(子集),所以有必要在每一页面显示当前结果集的记录总数等统计信息。

服务器在运行dtscript程序产生页面的阶段,将statis语句产生的结果,以环境变量方式提供dtscript程序使用,这样,就可以把这些统计结果显示在html页面上,并可以用来控制页面创建过程。

例如,典型的statis语句如下:

select COUNT(*) as totalkey , SUM(hitnumber) as totalrec from tempdb..srch1

语句执行的结果,是产生命中键项总项数和命中记录总条数。

subset-append-column参数

定义了转换结果集中特殊列使用的SQL语句。

所谓特殊列,是指这些列中包含了最终想获得的数据的线索,而不是想获得的数据本身,通过执行这里配置的SQL语句,可以将线索转换为最终数据内容。

那么,为什么不在原始定义的地方直接定义最终想获得的数据呢? 因为有的数据字段内容太长,直接作为结果集内字段出现,生成的临时表会占用SQL Server大量的内存和磁盘空间。而上述转换办法,是在真正构造动态页面时、抽取结果集子集的阶段运作的,可以节约大量资源开销。

例如:在利用“记录索引号”检索途径进行检索时,URL命令行中指定的结果集为“marcrecord”。该结果集的记录由两个特殊列recid和dbname构成,其中recid是命中的MARC记录在数据库MARC表中的记录索引号,dbname是这一条命中的MARC记录所在的逻辑库内的SQL库名。以这两项为记录字段,组成的结果集当然比直接由命中的MARC记录组成的结果集占用的空间更小。

在以结果集“marcrecord”定义中的“subset-append-column = ”参数,就是指定了一个SQL语句,用于将特殊列recid和dbname转换为最终想获得的数据--MARC记录。

catch-key-parameter-name参数

定义了结果集缓存搜索的匹配参数。

为了让在前面产生的检索结果集能被其后发生的相同条件的检索请求重复使用,DataTrans-1500系统将每次检索得到的结果集放入缓存。这样做有利于节省服务器时间、空间开销。

那么,DataTrans-1500系统是怎样重复利用前面产生的结果集的呢?

DataTrans-1500系统每次原始创建结果集(而不是直接利用已有结果集)时,都会记下产生本结果集的检索条件和结果集名称等参数,并将其与结果集组织在一起进行缓存。

一般而言,DataTrans-1500系统每次试图创建结果集时都首先搜索缓存的结果集,也就是依照本参数定义的URL命令参数项目同缓存的所有结果集参数进行匹配运算。如果匹配成功,则直接利用所匹配上的缓存中的结果集。如果匹配不成功,则需进行SQL数据库的检索,创建一个新的结果集。

例如:“catch-key-parameter-name = recordset,word,link,match,from”定义了在结果集缓存中搜索时,需要匹配的结果集名(recordset)、检索词(word)、检索词逻辑组合方式(link)、检索匹配方式(match)和检索途径(from)等参数。

4.1.2 输出格式定义

输出格式,定义了服务器在创建动态页面时,要调用的若干配套DTScript程序名。

输出格式定义命令为<format>。

<format>命令全部被包围在<formatdirectory>...</formatdirectory>体中。

search.command配置文件中,输出格式定义部分举例如下:

<formatdirectory>

<format name=robotformat

recordset = "robot"

header = /cfgs/html-robot-header.pro

record = /cfgs/html-robot-record.pro

footer = /cfgs/html-robot-footer.pro

>

<format name=hitcount

recordset = "titlenumber,titlenumberpos"

header = /cfgs/html-hitcount-header.pro

record = /cfgs/html-hitcount-record.pro

footer = /cfgs/html-hitcount-footer.pro

>

<format name=browse

recordset = marcrecord

header = /cfgs/html-browse-header.pro

record = "%@sqldbfullpath(@columntext(/"dbname/"))%/../cfgs/html-browse-record.flt"

footer = /cfgs/html-browse-footer.pro

>

<format name=detail

recordset = "marcrecordbyid, marcrecord"

header = /cfgs/html-detail-header.pro

record = "%@sqldbfullpath(@columntext(/"dbname/"))%/../cfgs/html-detail-record.flt"

footer = /cfgs/html-detail-footer.pro

>

<format name=issuedetail

recordset = issue

header = /cfgs/html-issuedetail-header.pro

record = /cfgs/html-issuedetail-record.pro

footer = /cfgs/html-issuedetail-footer.pro

>

<format name=entitydetail

recordset = entity

header = /cfgs/html-entitydetail-header.pro

record = /cfgs/html-entitydetail-record.pro

footer = /cfgs/html-entitydetail-footer.pro

>

<format name=worksheet

recordset = "marcrecordbyid, marcrecord"

header = /cfgs/html-worksheet-header.pro

record = "%@sqldbfullpath(@columntext(/"dbname/"))%/../cfgs/html-worksheet-record.flt"

footer = /cfgs/html-worksheet-footer.pro

>

 

</formatdirectory>

每个输出格式的定义放在一个<format>命令中。<format>命令的参数,定义了输出格式的特性。

参数解释如下:

1)name参数,定义了输出格式的名称。

2)recordset参数,定义了适宜与本输出格式配套使用的结果集名称。

3)header参数。定义了header阶段的dtscript程序文件名。

4)record参数。定义了record阶段的dtscript程序文件名。

5)footer参数。定义了footer阶段的dtscript程序文件名。

上述header/record/footer参数,定义了html动态页面的构造办法。由于详细讲解DataTrans-1500服务器构造动态页面的原理需要很大的篇幅,将专门在第九章中讲述。

 

4.2 write.command命令

write命令是向数据库写入数据记录、删除记录的命令。

整个write.command配置文件,由一个<sqltemplate>命令构成。

<sqltemplate>命令有如下参数。

1)check-marc-column参数,定义了检索一条MARC记录要使用的SQL语句模板。服务器将利用这个语句来确定一个特定的ID的记录是否存在。在这个SQL语句模板中,需要使用%recordid%宏来定义记录ID,在运行阶段,服务器将用实际的记录ID来替换。

2)insert-new-row参数,定义了插入一个新的(空的)MARC记录要使用的SQL语句模板。服务器将利用这个语句来插入一条空MARC记录,然后修改它的内容。在这个SQL语句模板中,需要使用%recordid%宏来定义要插入记录的记录ID, 在运行阶段,服务器将用实际的记录ID来替换。

3)delete-row参数,定义了删除一条MARC记录要使用的SQL语句模板。在这个SQL语句模板中,需要使用%recordid%宏来定义要删除记录的记录ID, 在运行阶段,服务器将用实际的记录ID来替换。

4)get-recordid-min参数,定义了在指定范围内确定一个实际存在的最小记录号的SQL语句模板。服务器将利用这个语句来校正记录号范围。在这个SQL语句模板中,需要使用%recordidmin%和%recordidmax%宏来分别定义记录号范围的最小号和最大号, 在运行阶段,服务器将用实际的记录ID来替换。

5)get-recordid-max参数,定义了在指定范围内确定一个实际存在的最大记录号的SQL语句模板。服务器将利用这个语句来校正记录号范围。在这个SQL语句模板中,需要使用%recordidmin%和%recordidmax%宏来分别定义记录号范围的最小号和最大号, 在运行阶段,服务器将用实际的记录ID来替换。

6)sql-db-name参数,定义了SQL库名模板。

7)marc-column-name参数,定义了SQL库中[MARC]表的[marc]字段名模板。

8)keys-table-name参数,定义了SQL库中[keys]表的表名模板。

9)keys-field-name参数,定义了SQL库中[keys]表的[key]字段名模板。

10)content-field-name参数,定义了SQL库中[keys]表的[content]字段名模板

11)from-field-name参数,定义了SQL库中[keys]表的[from]字段名模板。

12)recordid-field-name参数,定义了SQL库中[keys]表的[recordid]字段名模板。

在数据记录写入SQL库的过程中,将依照上述参数定义,产生SQL命令。采用宏来定义这些命令,能够适应不同SQL库的不同库名/表名/字段名。

使用上述参数的定义,write.command命令可以完成如下三种操作:

装载数据 向数据库装载ISO2709格式或工作单格式的数据。

删除记录 删除数据库中的记录。

重建索引 重新利用数据库cfgs目录下的keys.cfg文件从MARC表中抽取检索点,一般当已经抽取的检索点改变时或增加检索点时进行该操作。

这三项操作系统都需要验证操作者的身份,一般由系统管理员来执行这些操作。这些操作的入口在主页面的“数据库管理”锚点,具体实现见下节的dir.command命令。

4.3 dir.command命令

dir.command命令用来列出系统的资源。

Dir.command命令由一个〈formatdirectory>…</formatdirectory>体组成,其源代码如下:

<formatdirectory>

<format name=default

header = /cfgs/html-dir-header.pro

record = /cfgs/html-dir-record.pro

footer = /cfgs/html-dir-footer.pro

>

<format name=managedb

header = /management/html-dir-header.pro

record = /management/html-dir-record.pro

footer = /management/html-dir-footer.pro

>

</formatdirectory>

〈formatdirectory>…</formatdirectory>体内包含了<format>项,来 执行不同的资源管理操作。

Default命令项

第一个<format>项名为“default”,用来从资源根目录开始列出当前目录的所有文件夹和文件,并在目录后显示一个向下一级目录的链接。这个命令项在点击DataTrans-1500主页面的“资源管理”锚点时,被系统调用。

调用此命令项后的输出页面也是由header、record、footer三阶段组成,三阶段的生成程序位于根目录下的cfgs目录中,分别是:html-dir-header.pro、html-dir-record.pro、html-dir-footer.pro程序。

使用这个命令项查询者可以通过浏览器在远程查看服务器上的资源组成,包含的各级目录和文件等,当然查询者对这些信息是只读的,他不能作任何修改。管理员如果不想让查询者看到这些信息,也可以在主页面屏蔽掉这项命令,方法是:在主页面删除“资源管理”的锚点。

Managerdb命令项

第二个<format>项名为“managerdb”,用来列出资源中所有的数据库名,并在每个数据库名称上显示一个到对此数据库进行后继操作页面的锚点。这个命令项在点击DataTrans-1500主页面的“数据库管理”锚点时,被系统调用。

调用此命令项后的输出页面也是由header、record、footer三阶段组成,三阶段的生成程序位于根目录下的management目录中,分别是:html-dir-header.pro、html-dir-record.pro、html-dir-footer.pro程序。

使用这个命令项可以在浏览器上列出服务器上的所有数据库,管理员通过以这些数据库名称为锚点的链接,可以进入具体数据库的管理界面,对具体数据库进行装载数据、删除记录、重建索引的操作。

 

 Command对象

一个SQL命令的描述文本可能是相当复杂的,有的命令中还要用到若干个参数。因此,用Conn.Execute方法来执行命令有时表达起来十分困难。Command对象就是克服这一困难的最好工具。使用Command对象可以预先把命令和参数储存在它的属性和参数集合中,最后执行语句Command.Execute即可。

一 Command对象的属性

建立Command对象的方法如下:Set CommandName = Server.CreqateObject("ADODB.command")其中,CommandName是您给Command对象的命名。建立了Command对象以后,需要给它设置属性值。Command对象有七条属性,前两条是必须设置的。

1 ActiveConnection属性Command对象是基于一个已建立的Connection对象的。本属性用来表示连接信息,它一般是一个连接对象的名称。语法CommandName.ActiveConnection = 连接信息(如onnection对象名)如:Comm.ActiveConnection=Conn 。这一步是不可缺少的。

2 CommandText属性这一属性用来储存要执行的命令本身,它可以是一条SQL命令,数据库表名或储存过程的名。语法CommandName.CommandText = 命令字符串如:Comm.CommandText = "Insert into friends Values(5,?,?,?,?)" 。这是一个插入命令,"?"部分由参数对象提供。

3 CommandType属性这一属性用来储存命令的操作类型,类似于RecordSet的OPEN方法的Option参数。可以省略。其取值-1,1,2,3的含义如下表。

参数常数数值说明adCmdUnknown-1类型不确定,这是缺省值AdCmdText1一般命令。文本SQL命令AdCmdTable2一个存在的表名称AdCmdStoreProc3一个存在的过程名(Stored Procedure)

该属性可以读/写,例如:Comm.CommandType = adCmdText

4 CommandTimeOut属性该属性用来确定Command命令执行的最长等待时间(秒),缺省值为30秒。该值设置为0表示无时间限制。在程序中如果使用表单输入,输入时由等待(不操作),就会发生“超时”而报错。

5 Name属性该属性储存了Command对象的名称,名称是在创建时给出的,所以该属性是只读的。

6 State属性该属性用来设置Command对象的状态。状态有两种,adStateClosed=0 表示关闭,adStateOpen=1 表示打开(缺省值)。

7 Prepared属性Prepared属性是Boolean型的,用来设置Command对象的SQL命令是否预编译。如 Comm.Prepared = Ture,则对数据库进行操作前预编译SQL命令,这样可以提供执行速度,这对于需要多次执行的命令很有用。缺省值为false。

Command对象有两个方法Execute 和CreateParameter。Execute方法用来执行命令,但执行前往往需要用 CreateParameter 方法来创建参数。我们先介绍Execute方法。

二 Execute方法

Execute方法的功能是以Parameters集合中的参数来执行Command对象中储存的命令。Execute方法既是过程也是函数,所以有两种使用方法:

Set recordset = Command.Execute([RecordAffeted][,Parameters][,Option])Command.Execute [RecordAffeted,Parameters,Option]

三个参数RecordAffeted,Parameters 和 Option都是可选项,RecordAffeted = 整数,表示执行命令时返回或影响的记录条数,缺省时无限制。Parameters选用时表示要传递参数集合Parameters中的所有参数。参数集合Parameters在下文叙述。Option 的可取值诶 -1,1,2,3,与上文CommandType属性中的含义一样。

例句:

Comm.ExecuteComm.Execute 20,Parameters,1Set rs = Comm.Execute()Set rs = Comm.Execute(20,Parameters,1)

三 Paremeter对象

Paremeter对象即参数对象,每个对象储存一个参数。Paremeter对象含有五个属性,它们分别是name 参数名(如字段名),type 参数类型(数据类型),direction 操作方向(输入,输出..),size=数据长度(字节数)和value=参数的值。其中,direction参数的可取值如下表。

参数常数 数值 说明 adParemUnknown -1 参数类型不确定,这是缺省值 AdParemInput 1 输入参数 AdParemOutput 2 输出参数 AdParemReturnValue 3 返回值参数

四 Paremeters集合(对象)

Paremeters集合是Command对象拥有的所有Paremeter对象的集合,Command对象一经创建,Paremeters集合就存在(一开始是空集合)。它只有一个属性Count=长整数表示已经定义的参数的个数,每个参数要用Command 对象的CreateParemeters()方法来创建。

Count属性的语法 N=comm.Parameters.Count

Paremeters集合用几个方法。Append方法把一个用CreateParemeters()方法创建的参数加入到参数集合中。delete方法输出一个指定的参数。Refresh方法用来重新取得Paremeters集合中的所有参数。Item方法用来取得Paremeters集合中的某个参数。它们的语法如下:

Comm.Paremeters.Append paramComm.Paremeters.Delete indexComm.Paremeters.RefreshSet param = Comm.Paremeters.Item(index)Set param = Comm.Paremeters(index)Comm.Paremeters.Append param

其中,param是一个参数名,index是参数集的索引号,如数组的下标,从0 到 Parameters.Count-1。

五 CreateParemeters方法

Command对象的CreateParemeters()方法用来创建一个参数对象,语法如下:

Set 参数名 = CreateParemeters(Name,Type,Direction,Size,Value)

其中Name,type等参数就是待创建的的诸属性,其含义参看上文Paremeter对象。使用时只要注意它们的次序。例如:Set param = comm.CreateParameter("Name",129,AdParemInput,6,"李哓红")注意,括号中的"Name"表示Param.name="Name", Name实际上是一个字段名。

六 Command对象应用示例

程序目标 应用Command对象数据库添加一个记录,数据值用Paremeter对象提供。

数据源friends,要执行的命令为:Insert Into friends Values(5,?,?,?,?)要添加的记录是(5 李哓红 女 1978.5.30 22)

代码

<%@ Language="vbscript" %><!-- append.asp --><%Const adChar=129 '参数类型Const adCmdText=1 '命令类型Const adParamInput=1 '操作方向

Set Conn=Server.CreateObject("ADODB.Connection")Conn.Open "dsn=friends"Set Comm=Server.CreateObject("ADODB.Command")Comm.ActiveConnection=ConnComm.CommandText = "Insert into friends Values(5,?,?,?,?)"Comm.CommandType = adCmdText

Set param = comm.CreateParameter("name",adChar,adParamInput,6,"李哓红")Comm.Parameters.append paramSet param = comm.CreateParameter("sex",adChar,adParamInput,2,"女")Comm.Parameters.append paramSet param = comm.CreateParameter("birthday",adChar,adParamInput,9,"1978.5.30")Comm.Parameters.append paramSet param = comm.CreateParameter("age",adChar,adParamInput,2,"22")Comm.Parameters.append paramComm.Execute

'记录添加后显示所有记录以观看Execute后的结果Set rs=Conn.Execute("select* from friends",10,1)Response.Write "<a href='vbscript:history.back()'>返回</a><br>"Response.Write "<table border=2>"Response.Write "<tr>"for i=0 to rs.fields.Count-1 '输出表头Response.Write "<td>" &Ucase(rs(i).name) & "</td>"NextDo While not rs.Eof '输出记录Response.Write "<tr>"for i=0 to rs.fields.Count-1 '输出表行 Response.Write "<td>" & rs(i).Value & "</td>"NextResponse.Write "</tr>"rs.MoveNextLooprs.closeconn.close%>

分享到:
评论

相关推荐

    windows-command命令详解

    Windows 命令提示符(即 Cmd)是 Windows 系统的一种命令行操作工具, 用户们可以通过此程序来运行一些命令对电脑系统进行设置等。 所有受支持的 Windows 和 Windows Server 版本都内置了一组 Win32 控制台命令。 ...

    Linux下ftp命令详解

    Linux下ftp命令详解 FTP&gt; ! 从 ftp 子系统退出到外壳。 FTP&gt; ? 显示 ftp 命令说明。? 与 help 相同。 格式:? [command] 说明:[command]指定需要帮助的命令名称。如果没有指定 command,ftp 将显示全部命令的列表...

    SFF8090,光驱命令详解

    SFF8090,光驱命令详解,所有packet command详解

    linux下FTP、SFTP命令详解.pdf

    linux下FTP、SFTP命令详解.pdf

    Linux命令详解手册.zip

    linux命令详解手册

    Linux.Command(PDF)

    Linux.Command,Linux下命令详解。

    Linux命令手册 Command Directory 英文版

    Linux Command Directory命令手册 英文版,Linux所有命令详解

    DOS编程高级技巧,命令详解,相关知识

    第二章 FOR命令详解 一、参数 /d 二、参数 /R 三、参数 /L 四、参数 /F 第三章 FOR命令中的变量 一、 ~I - 删除任何引号("),扩展 %I 二、 %~fI - 将 %I 扩展到一个完全合格的路径名 三、 %~dI - 仅将 %I 扩展到一个...

    top命令详解1

    COMMAND:进程启动命令名称8.1. top命令交互操作指令下面列出一些常用的 top命令操作指令 q:退出top命令 &lt;Space&gt;:立即刷新 s:设置刷

    VI命令详解

    详细介绍VI的使用方法及操作,Linux之VI命令详解 功能最强在的编辑器——vi vi的基本概念 基本上vi可分为三种操作状态,分别是命令模式(Command mode)、插入模式(Insert mode)和底线命令模式(Last line mode...

    Ping命令详解及技巧

    参照ping命令说明ping时会用到的技巧,ping只有在安装了TCP/IP协议以后才可以使用。

    MySQL 5.7 mysql command line client 使用命令详解

    主要介绍了MySQL 5.7 mysql command line client 使用命令,需要的朋友可以参考下

    linux chroot命令详解

    chroot NEWROOT [COMMAND [ARG]...] 具体用法请参考本文的 demo。 为什么要使用 chroot 命令 增加了系统的安全性,限制了用户的权力: 在经过 chroot 之后,在新根下将访问不到旧系统的根目录结构和文件,这样就...

    Linux/Shell命令详解

    详细介绍的Linux的Shell常用和生僻命令的用法,并含有例子详细说明如何使用。是一个很好的使用手册。

    详解设计模式中的Command命令模式及相关C++实现

    主要介绍了详解设计模式中的Command命令模式及相关C++实现,命令模式强调调用操作的对象和操作的具体实现者之间的解耦,需要的朋友可以参考下

    Linux命令详解(一)

    通用Linux命令介绍,内容较全,解说详细,可以为Linux爱好者身边常备的参考工具书。

    Linux命令详解(二)

    通用Linux命令介绍,内容较全,解说详细,可以为Linux爱好者身边常备的参考工具书。

    Linux命令详解(三)

    通用Linux命令介绍,内容较全,解说详细,可以为Linux爱好者身边常备的参考工具书。

Global site tag (gtag.js) - Google Analytics