wap网站现在还有什么用,广州网络公司排名,生态文明建设网站,广东建设工程交易中心网站教程重点简述#xff1a;Command命令的使用,批处理
Fireworks4COMMANDS(命令)功能祥解:Command在Fireworks3中才被引入.这个功能在很多方面为我们节省了大量的工作时间.同时它是完全开放的,对于精通Javascript脚本的又喜欢用FW制作Web应用图像的朋友来说这是再好不过的了,你…
教程重点简述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 namerobot
union-into-phrase into %temptablename%
statis select COUNT(*) as totalkey from %temptablename%
catch-key-parameter-name recordset,word,link,match,from recordset nametitlenumber
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 nametitlenumberpos
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 namemarcrecord
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 namemarcrecordbyid
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 nameissue
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 nameentity
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 namecopybar
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表中将满足条件id1000000022的记录查出来对命中的记录提取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 namerobotformat
recordset robot
header /cfgs/html-robot-header.pro
record /cfgs/html-robot-record.pro
footer /cfgs/html-robot-footer.pro format namehitcount
recordset titlenumber,titlenumberpos
header /cfgs/html-hitcount-header.pro
record /cfgs/html-hitcount-record.pro
footer /cfgs/html-hitcount-footer.pro format namebrowse
recordset marcrecord
header /cfgs/html-browse-header.pro
record %sqldbfullpath(columntext(/dbname/))%/../cfgs/html-browse-record.flt
footer /cfgs/html-browse-footer.pro format namedetail
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 nameissuedetail
recordset issue
header /cfgs/html-issuedetail-header.pro
record /cfgs/html-issuedetail-record.pro
footer /cfgs/html-issuedetail-footer.pro format nameentitydetail
recordset entity
header /cfgs/html-entitydetail-header.pro
record /cfgs/html-entitydetail-record.pro
footer /cfgs/html-entitydetail-footer.pro format nameworksheet
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 namedefault
header /cfgs/html-dir-header.pro
record /cfgs/html-dir-record.pro
footer /cfgs/html-dir-footer.pro format namemanagedb
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.ActiveConnectionConn 。这一步是不可缺少的。
2 CommandText属性这一属性用来储存要执行的命令本身它可以是一条SQL命令数据库表名或储存过程的名。语法CommandName.CommandText 命令字符串如Comm.CommandText Insert into friends Values(5,?,?,?,?) 。这是一个插入命令?部分由参数对象提供。
3 CommandType属性这一属性用来储存命令的操作类型类似于RecordSet的OPEN方法的Option参数。可以省略。其取值-1123的含义如下表。
参数常数 数值 说明 adCmdUnknown -1 类型不确定这是缺省值 AdCmdText 1 一般命令。文本SQL命令 AdCmdTable 2 一个存在的表名称 AdCmdStoreProc 3 一个存在的过程名Stored Procedure
该属性可以读/写例如Comm.CommandType adCmdText
4 CommandTimeOut属性该属性用来确定Command命令执行的最长等待时间秒缺省值为30秒。该值设置为0表示无时间限制。在程序中如果使用表单输入输入时由等待不操作就会发生“超时”而报错。
5 Name属性该属性储存了Command对象的名称名称是在创建时给出的所以该属性是只读的。
6 State属性该属性用来设置Command对象的状态。状态有两种adStateClosed0 表示关闭adStateOpen1 表示打开缺省值。
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 的可取值诶 -1123与上文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属性的语法 Ncomm.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 参数名 CreateParemetersName,Type,Direction,Size,Value)
其中Name,type等参数就是待创建的的诸属性其含义参看上文Paremeter对象。使用时只要注意它们的次序。例如Set param comm.CreateParameter(Name,129,AdParemInput,6,李哓红)注意括号中的Name表示Param.nameName, Name实际上是一个字段名。
六 Command对象应用示例
程序目标 应用Command对象数据库添加一个记录数据值用Paremeter对象提供。
数据源friends要执行的命令为Insert Into friends Values(5,?,?,?,?)要添加的记录是5 李哓红 女 1978.5.30 22
代码
% Languagevbscript %!-- append.asp --%Const adChar129 参数类型Const adCmdText1 命令类型Const adParamInput1 操作方向
Set ConnServer.CreateObject(ADODB.Connection)Conn.Open dsnfriendsSet CommServer.CreateObject(ADODB.Command)Comm.ActiveConnectionConnComm.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 rsConn.Execute(select* from friends,10,1)Response.Write a hrefvbscript:history.back()返回/abrResponse.Write table border2Response.Write trfor i0 to rs.fields.Count-1 输出表头 Response.Write td Ucase(rs(i).name) /tdNextDo While not rs.Eof 输出记录 Response.Write tr for i0 to rs.fields.Count-1 输出表行 Response.Write td rs(i).Value /td Next Response.Write /tr rs.MoveNextLooprs.closeconn.close%