# sqlServer 库模块帮助文档

## sqlServer 成员列表 <a id="sqlServer" href="#sqlServer">&#x23;</a>

### sqlServer( "数据库连接语句",其他格式化参数 ) <a id="sqlServer( "数据库连接语句",其他格式化参数 )" href="#sqlServer( "数据库连接语句",其他格式化参数 )">&#x23;</a>

```aardio
sqlServer("Provider=SQLOLEDB.1;Data Source=.\SQLEXPRESS;Database=数据库名;User ID=登录名;Password=登录密码");
```

### sqlServer( 连接参数表 ) <a id="sqlServer( 连接参数表 )" href="#sqlServer( 连接参数表 )">&#x23;</a>

```aardio
sqlServer({   
	["Data Source"] = "127.0.0.1,7788";  
	["Database"] = "数据库名";  
	["User ID"] = "用户名";  
	["Password"] = "密码";   
})
```

### sqlServer() <a id="sqlServer()" href="#sqlServer()">&#x23;</a>
[返回对象:sqlServerObject](#sqlServerObject)

### sqlServer.escape() <a id="sqlServer.escape" href="#sqlServer.escape">&#x23;</a>
转义参数指定值为用于 SQL 查询语句的参数化值

### sqlServer.escapeId() <a id="sqlServer.escapeId" href="#sqlServer.escapeId">&#x23;</a>
如果传入参数是文本则转换为 SQL 标识符,  
返回文本首尾会添加中括号,  

如果传入参数是表, 则格式化为 SQL 键值对并以 AND 为分隔符,  
如果表中的值为数组,则格式化为 IN 语句

### sqlServer.format(SQL语句,格式化参数...) <a id="sqlServer.format" href="#sqlServer.format">&#x23;</a>
格式化 SQL 查询语句。  
所有需要格式化 SQL 语句的函数调用此函数格式化 SQL语句,  
如果格式化参数不是表则调用 string.format 格式化,否则按以下规则格式化:  

SQL语句中?或??占位符使用表的数组元素格式化,  
@字符开始的命名参数使用表的名值对元素格式化,  
其中??格式化为标识符,其他占位符格式化为参数值。  

字符串转为SQL安全转义字符串,buffer转为 0x4D7953514C 格式,  
数组则自动展开为列表,例如{'a', 'b'}格式化为'a', 'b'  
嵌套数组则格式化为分组列表,例如{{'a', 'b'}, {'c', 'd'}} 格式化为 ('a', 'b'), ('c', 'd')  
非数组的命名表，则格式化为 SQL 键值对,默认以逗号为分隔符,  
??占位符格式化 SQL 键值对则以 AND 为分隔符,并将数组值转换为IN语句

## sqlServerObject 成员列表 <a id="sqlServerObject" href="#sqlServerObject">&#x23;</a>

### sqlServerObject.* <a id="sqlServerObject.any" href="#sqlServerObject.any">&#x23;</a>
可直接使用对象的成员获取ADO组件提供的COM常量  
这些常量名的前缀都是 ad

### sqlServerObject.beginTrans() <a id="sqlServerObject.beginTrans" href="#sqlServerObject.beginTrans">&#x23;</a>
启动事务,返回嵌套层数  
注意如果未调用此函数开启事务，默认每条独立SQL语句仍然会自动创建独立事务

### sqlServerObject.close() <a id="sqlServerObject.close" href="#sqlServerObject.close">&#x23;</a>
关闭数据库连接

### sqlServerObject.codepage <a id="sqlServerObject.codepage" href="#sqlServerObject.codepage">&#x23;</a>
非 Unicode 字符的默认编码

### sqlServerObject.commitTrans() <a id="sqlServerObject.commitTrans" href="#sqlServerObject.commitTrans">&#x23;</a>
提交事务

### sqlServerObject.createCommand() <a id="sqlServerObject.createCommand" href="#sqlServerObject.createCommand">&#x23;</a>
[返回对象:sqlServerCmdObject](#sqlServerCmdObject)

### sqlServerObject.createCommand(sql,其他格式化SQL参数) <a id="sqlServerObject.createCommand" href="#sqlServerObject.createCommand">&#x23;</a>
创建命令对象  
格式化规则请参考 sqlServer.format 函数说明,  
格式化参数可以是一个表参数,用于替换SQL中占位符指定的参数,  
SQL语句用中@前缀标明命名参数使用表参数中的名值对格式化,  
SQL语句中的?或??占位符使用表参数中的数组值格式化

### sqlServerObject.each() <a id="sqlServerObject.each" href="#sqlServerObject.each">&#x23;</a>
[返回对象:sqlServerRsObject](#sqlServerRsObject)

### sqlServerObject.each(sql,其他格式化参数) <a id="sqlServerObject.each" href="#sqlServerObject.each">&#x23;</a>

```aardio
for(rs in sqlServerObject.each("select * from [表名]") ){ 
	io.print( rs("字段名").value );
}
```

### sqlServerObject.eachTableObject <a id="sqlServerObject.eachTableObject" href="#sqlServerObject.eachTableObject">&#x23;</a>

```aardio
for(tbName,tbType,tbObj in sqlServerObject.eachTableObject() ){

}
```

### sqlServerObject.eachTableObject() <a id="sqlServerObject.eachTableObject" href="#sqlServerObject.eachTableObject">&#x23;</a>
[返回对象:ADOXCatalogTblObject](#ADOXCatalogTblObject)

### sqlServerObject.exec(sql,其他格式化SQL参数) <a id="sqlServerObject.exec" href="#sqlServerObject.exec">&#x23;</a>
执行 SQL 语句  
格式化参数规则请参考 sqlServer.format 函数说明,  
格式化参数可以是一个表参数,用于替换SQL中占位符指定的参数,  
SQL语句用中@前缀标明命名参数使用表参数中的名值对格式化,  
SQL语句中的?或??占位符使用表参数中的数组值格式化。  

执行失败抛出异常。  
执行成功返回受影响的记录行数

### sqlServerObject.existsProcedure("存储过程名") <a id="sqlServerObject.existsProcedure" href="#sqlServerObject.existsProcedure">&#x23;</a>
判断数据库中是否存在指定存储过程

### sqlServerObject.existsTable("表名") <a id="sqlServerObject.existsTable" href="#sqlServerObject.existsTable">&#x23;</a>
判断数据库中是否存在指定表

### sqlServerObject.findProcedureObject("存储过程名") <a id="sqlServerObject.findProcedureObject" href="#sqlServerObject.findProcedureObject">&#x23;</a>
返回存储过程对象

### sqlServerObject.findTableObject("表名") <a id="sqlServerObject.findTableObject" href="#sqlServerObject.findTableObject">&#x23;</a>
返回表对象

### sqlServerObject.findTableObject() <a id="sqlServerObject.findTableObject" href="#sqlServerObject.findTableObject">&#x23;</a>
[返回对象:ADOXCatalogTblObject](#ADOXCatalogTblObject)

### sqlServerObject.firstTableName() <a id="sqlServerObject.firstTableName" href="#sqlServerObject.firstTableName">&#x23;</a>
返回数据库的第一个表名。  
参数 @1 可选用一个字符串指定表类型，默认为 "TABLE"。

### sqlServerObject.firstTableObject() <a id="sqlServerObject.firstTableObject" href="#sqlServerObject.firstTableObject">&#x23;</a>
返回数据库中的第一个表对象。  
参数 @1 可选用一个字符串指定表类型，默认为 "TABLE"。  

[返回对象:ADOXCatalogTblObject](#ADOXCatalogTblObject)

### sqlServerObject.getRows() <a id="sqlServerObject.getRows" href="#sqlServerObject.getRows">&#x23;</a>
查询并返回包含结果数据的数组  
此函数返回的数据是先列后行,与getTable相反,  
数组由所有列的数据组成,每个列都是由多个行组成的数组  
可以使用 返回数据[ 列号 ][ 行号 ] 获取对应的值,  
也可以使用 数据.字段名[列号] 获取对应的值  

返回数组的元表中使用recordCount记录了总行数,  
结果集为空也会返回空数组,可使用 @.recordCount判断记录集的行数  
元表中的fields字段则是记录了所有字段名的数组.  

所有值后面的占位空白没有去除  
可使用getTable函数获取处理过空白占位符的数据,  
或参考该函数源码自行处理尾部空白

### sqlServerObject.getTable("select * from [表名]",其他格式化参数) <a id="sqlServerObject.getTable" href="#sqlServerObject.getTable">&#x23;</a>
返回查询结果集数组  
每个元素代表一行,每行由N个键值对列组成  
返回值的fields成员记录了所有数据列的字段名  
结果集为空也会返回空数组,使用#操作符获取结果集长度

### sqlServerObject.openRecordSet() <a id="sqlServerObject.openRecordSet" href="#sqlServerObject.openRecordSet">&#x23;</a>
[返回对象:sqlServerRsObject](#sqlServerRsObject)

### sqlServerObject.openRecordSet(sql,游标类型,锁定方法,其他格式化SQL参数) <a id="sqlServerObject.openRecordSet" href="#sqlServerObject.openRecordSet">&#x23;</a>
打开记录集,游标类型如下:  
0:默认值,启动一个只能向前移动的游标  
1:打开键集类型游标,允许任意移动，并且允许更改记录集  
2:打开动态类型游标,许所有操作，其他用户对记录集的添加、删除、更改在此记录集中  
3:打开原生类型游标  

锁定方法如下：  
1:默认值,不能改变数据  
2:悲观锁,编辑时立即锁定数据源的记录  
3:乐观锁,只在调用Update 方法时才锁定记  
4: 乐观批更新

### sqlServerObject.rollbackTrans() <a id="sqlServerObject.rollbackTrans" href="#sqlServerObject.rollbackTrans">&#x23;</a>
回滚事务

### sqlServerObject.rowCount() <a id="sqlServerObject.rowCount" href="#sqlServerObject.rowCount">&#x23;</a>
返回上次执行增、删、改、查等SQL影响的记录行数

### sqlServerObject.stepQuery("select * from [表名]",其他格式化参数) <a id="sqlServerObject.stepQuery" href="#sqlServerObject.stepQuery">&#x23;</a>
返回查询结果集第一行的数据,由键值对列组成,  

格式化规则请参考 sqlServer.format 函数说明,  
格式化参数可以是一个表参数,用于替换SQL中占位符指定的参数,  
SQL语句用中@前缀标明命名参数使用表参数中的名值对格式化,  
SQL语句中的?或??占位符使用表参数中的数组值格式化

## ADOXCatalogColumnObject 成员列表 <a id="ADOXCatalogColumnObject" href="#ADOXCatalogColumnObject">&#x23;</a>

### ADOXCatalogColumnObject.DefinedSize <a id="ADOXCatalogColumnObject.DefinedSize" href="#ADOXCatalogColumnObject.DefinedSize">&#x23;</a>
字段大小

### ADOXCatalogColumnObject.Name <a id="ADOXCatalogColumnObject.Name" href="#ADOXCatalogColumnObject.Name">&#x23;</a>
列名

### ADOXCatalogColumnObject.Type <a id="ADOXCatalogColumnObject.Type" href="#ADOXCatalogColumnObject.Type">&#x23;</a>
类型

## ADOXCatalogTblObject 成员列表 <a id="ADOXCatalogTblObject" href="#ADOXCatalogTblObject">&#x23;</a>

### ADOXCatalogTblObject.Columns("列名") <a id="ADOXCatalogTblObject.Columns" href="#ADOXCatalogTblObject.Columns">&#x23;</a>
参数也可以写数值索引

### ADOXCatalogTblObject.Columns() <a id="ADOXCatalogTblObject.Columns" href="#ADOXCatalogTblObject.Columns">&#x23;</a>
[返回对象:ADOXCatalogColumnObject](#ADOXCatalogColumnObject)

## ADOXCatalogTblObject.Columns 成员列表 <a id="ADOXCatalogTblObject.Columns" href="#ADOXCatalogTblObject.Columns">&#x23;</a>

列集合

### ADOXCatalogTblObject.Columns.Count <a id="ADOXCatalogTblObject.Columns.Count" href="#ADOXCatalogTblObject.Columns.Count">&#x23;</a>
总数

## adoConnErrObject 成员列表 <a id="adoConnErrObject" href="#adoConnErrObject">&#x23;</a>

### adoConnErrObject.Description <a id="adoConnErrObject.Description" href="#adoConnErrObject.Description">&#x23;</a>
错误描述

### adoConnErrObject.NativeError <a id="adoConnErrObject.NativeError" href="#adoConnErrObject.NativeError">&#x23;</a>
数据源错误代码

### adoConnErrObject.Number <a id="adoConnErrObject.Number" href="#adoConnErrObject.Number">&#x23;</a>
错误代码

### adoConnErrObject.SQLState <a id="adoConnErrObject.SQLState" href="#adoConnErrObject.SQLState">&#x23;</a>
数据源

### adoConnErrObject.Source <a id="adoConnErrObject.Source" href="#adoConnErrObject.Source">&#x23;</a>
错误对象

## sqlServerCmdObject 成员列表 <a id="sqlServerCmdObject" href="#sqlServerCmdObject">&#x23;</a>

### sqlServerCmdObject.addParameter <a id="sqlServerCmdObject.addParameter" href="#sqlServerCmdObject.addParameter">&#x23;</a>
调用createParameter创建参数对象,  
设置值并添加到SQL执行参数中  
注意如果直接使用这个函数添加参数,  
SQL语句中应当用?号作为参数占位符,  
参数只按添加顺序匹配SQL中的参数

### sqlServerCmdObject.addParameter() <a id="sqlServerCmdObject.addParameter" href="#sqlServerCmdObject.addParameter">&#x23;</a>
[返回对象:sqlServerParameterObject](#sqlServerParameterObject)

### sqlServerCmdObject.addParameter(名字,值,参数类型,字段类型,字段大小) <a id="sqlServerCmdObject.addParameter" href="#sqlServerCmdObject.addParameter">&#x23;</a>
直接添加SQL执行参数  
除名字，值以外的其他参数不必要设置  
返回创建的参数对象  

注意access的参数对象虽然必须设置正确的名字,  
但实际上他只按添加顺序执行

### sqlServerCmdObject.bind() <a id="sqlServerCmdObject.bind" href="#sqlServerCmdObject.bind">&#x23;</a>
参数是一个表,  
可使用多个键值对批量指定SQL命令对象的多个参数,  
此函数会按参数在SQL中出现的顺序逐个添加参数,  
SQL语句中所有参数名前面必须额外添加@前缀,  
此函数返回命令对象自身

[返回对象:sqlServerCmdObject](#sqlServerCmdObject)

### sqlServerCmdObject.cancel() <a id="sqlServerCmdObject.cancel" href="#sqlServerCmdObject.cancel">&#x23;</a>
取消执行

### sqlServerCmdObject.commandText <a id="sqlServerCmdObject.commandText" href="#sqlServerCmdObject.commandText">&#x23;</a>
要执行的SQL命令语句

### sqlServerCmdObject.commandType <a id="sqlServerCmdObject.commandType" href="#sqlServerCmdObject.commandType">&#x23;</a>
命令类型  
普通SQL为1，存储过程为4

### sqlServerCmdObject.createParameter(名字,字段类型,参数类型,字段大小,参数值) <a id="sqlServerCmdObject.createParameter" href="#sqlServerCmdObject.createParameter">&#x23;</a>
创建参数  
参数中用到的常量请使用COM对象的成员常量获取,  
例如cmd.adLongVarWChar  
这个函数创建的参数还需要调用parameters.append添加到执行参数中  

不建议直接调用此函数，可以使用更简单的addParameter或bind函数添加参数

### sqlServerCmdObject.each() <a id="sqlServerCmdObject.each" href="#sqlServerCmdObject.each">&#x23;</a>

```aardio
for(rs in sqlServerCmdObject.each() ){ 
	io.print( rs(0).value );/*执行SQL命令并遍历结果集  
rs为 ADODB.Recordset 对象，即ADO 表记录集  
可以使用 rs("字段名").value自记录集中提取数据,  
更多用法请参考 ADO  文档。*/
}
```

### sqlServerCmdObject.execute() <a id="sqlServerCmdObject.execute" href="#sqlServerCmdObject.execute">&#x23;</a>
[返回对象:sqlServerRsObject](#sqlServerRsObject)

### sqlServerCmdObject.execute(ra,parameters.option) <a id="sqlServerCmdObject.execute" href="#sqlServerCmdObject.execute">&#x23;</a>
执行查询,所有参数可选。  
参数ra 返回受查询影响的记录的数目   
参数parameters 用 SQL 语句传递的参数值   
参数options 一个或者多个 CommandTypeEnum 或 ExecuteOptionEnum 值。  
返回记录集对象，execute 返回的记录集没有 getTable,stepQuery 函数。  
executeRecords 返回的记录集提供 getTable,stepQuery 函数。

### sqlServerCmdObject.executeNoRecords(ra,parameters) <a id="sqlServerCmdObject.executeNoRecords" href="#sqlServerCmdObject.executeNoRecords">&#x23;</a>
执行查询不返回记录集,所有参数可选。  
参数ra 返回受查询影响的记录的数目   
参数parameters 用 SQL 语句传递的参数值

### sqlServerCmdObject.executeRecords() <a id="sqlServerCmdObject.executeRecords" href="#sqlServerCmdObject.executeRecords">&#x23;</a>
[返回对象:sqlServerRsObject](#sqlServerRsObject)

### sqlServerCmdObject.executeRecords(ra,parameters.option) <a id="sqlServerCmdObject.executeRecords" href="#sqlServerCmdObject.executeRecords">&#x23;</a>
执行查询,所有参数可选。  
参数ra 返回受查询影响的记录的数目   
参数parameters 用 SQL 语句传递的参数值   
参数options 一个或者多个 CommandTypeEnum 或 ExecuteOptionEnum 值。  
返回记录集对象，execute 返回的记录集没有 getTable,stepQuery 函数。  
executeRecords 返回的记录集提供 getTable,stepQuery 函数。

### sqlServerCmdObject.executeStream(ra,parameters) <a id="sqlServerCmdObject.executeStream" href="#sqlServerCmdObject.executeStream">&#x23;</a>
执行查询返回流,所有参数可选。  
参数ra 返回受查询影响的记录的数目   
参数parameters 用 SQL 语句传递的参数值

### sqlServerCmdObject.getRows() <a id="sqlServerCmdObject.getRows" href="#sqlServerCmdObject.getRows">&#x23;</a>
查询并返回包含结果数据的SafeArray数组  
此函数返回的数据是先列后行,与getTable相反,  
数组由所有列的数据组成,每个列都是由多个行组成的数组  
可以使用 返回数据[ 列号 ][ 行号 ] 获取对应的值,  
也可以使用 数据.字段名[列号] 获取对应的值  

返回数组的元表中使用recordCount记录了总行数,  
结果集为空也会返回空数组,可使用 @.recordCount判断记录集的行数  
元表中的fields字段则是记录了所有字段名的数组.  

所有值后面的占位空白没有去除  
可使用getTable函数获取处理过空白占位符的数据,  
或参考该函数源码自行处理尾部空白

### sqlServerCmdObject.getTable() <a id="sqlServerCmdObject.getTable" href="#sqlServerCmdObject.getTable">&#x23;</a>
执行SQL命令返回查询结果集数组  
每个元素代表一行,每行由N个键值对列组成  
返回值的fields成员记录了所有数据列的字段名  
结果集为空也会返回空数组,使用#操作符获取结果集长度

### sqlServerCmdObject.parameters("字符串参数") <a id="sqlServerCmdObject.parameters" href="#sqlServerCmdObject.parameters">&#x23;</a>
返回已添加的参数

### sqlServerCmdObject.parameters() <a id="sqlServerCmdObject.parameters" href="#sqlServerCmdObject.parameters">&#x23;</a>
[返回对象:sqlServerParameterObject](#sqlServerParameterObject)

### sqlServerCmdObject.rowCount() <a id="sqlServerCmdObject.rowCount" href="#sqlServerCmdObject.rowCount">&#x23;</a>
返回上次执行增、删、改、查等SQL影响的记录行数

### sqlServerCmdObject.stepQuery() <a id="sqlServerCmdObject.stepQuery" href="#sqlServerCmdObject.stepQuery">&#x23;</a>
执行SQL命令  
返回查询结果集第一行的数据,由键值对列组成  
无数据返回null

## sqlServerCmdObject.parameters 成员列表 <a id="sqlServerCmdObject.parameters" href="#sqlServerCmdObject.parameters">&#x23;</a>

参数列表

### sqlServerCmdObject.parameters.append(参数对象) <a id="sqlServerCmdObject.parameters.append" href="#sqlServerCmdObject.parameters.append">&#x23;</a>
添加参数  
注意access的参数对象虽然必须设置正确的名字,  
但实际上他只按添加顺序执行

### sqlServerCmdObject.parameters.count() <a id="sqlServerCmdObject.parameters.count" href="#sqlServerCmdObject.parameters.count">&#x23;</a>
返回参数长度

### sqlServerCmdObject.parameters.delete(索引) <a id="sqlServerCmdObject.parameters.delete" href="#sqlServerCmdObject.parameters.delete">&#x23;</a>
删除参数

### sqlServerCmdObject.parameters.refresh() <a id="sqlServerCmdObject.parameters.refresh" href="#sqlServerCmdObject.parameters.refresh">&#x23;</a>
刷新参数

## sqlServerObject.connection 成员列表 <a id="sqlServerObject.connection" href="#sqlServerObject.connection">&#x23;</a>

连接对象

### sqlServerObject.connection.ConnectionString <a id="sqlServerObject.connection.ConnectionString" href="#sqlServerObject.connection.ConnectionString">&#x23;</a>
连接串

### sqlServerObject.connection.Errors() <a id="sqlServerObject.connection.Errors" href="#sqlServerObject.connection.Errors">&#x23;</a>
[返回对象:adoConnErrObject](#adoConnErrObject)

### sqlServerObject.connection.Errors(0) <a id="sqlServerObject.connection.Errors" href="#sqlServerObject.connection.Errors">&#x23;</a>
参数指定错误索引

## sqlServerObject.connection.Errors 成员列表 <a id="sqlServerObject.connection.Errors" href="#sqlServerObject.connection.Errors">&#x23;</a>

错误集合

### sqlServerObject.connection.Errors.count <a id="sqlServerObject.connection.Errors.count" href="#sqlServerObject.connection.Errors.count">&#x23;</a>
错误数

## sqlServerParameterObject 成员列表 <a id="sqlServerParameterObject" href="#sqlServerParameterObject">&#x23;</a>

### sqlServerParameterObject.direction <a id="sqlServerParameterObject.direction" href="#sqlServerParameterObject.direction">&#x23;</a>
参数的类型，默认是adParamInput

### sqlServerParameterObject.name <a id="sqlServerParameterObject.name" href="#sqlServerParameterObject.name">&#x23;</a>
参数名称

### sqlServerParameterObject.size <a id="sqlServerParameterObject.size" href="#sqlServerParameterObject.size">&#x23;</a>
数据长度

### sqlServerParameterObject.value <a id="sqlServerParameterObject.value" href="#sqlServerParameterObject.value">&#x23;</a>
参数值

## sqlServerRsObject 成员列表 <a id="sqlServerRsObject" href="#sqlServerRsObject">&#x23;</a>

### sqlServerRsObject.GetRows <a id="sqlServerRsObject.GetRows" href="#sqlServerRsObject.GetRows">&#x23;</a>
查询并返回包含结果数据的数组  
此函数返回的数据是先列后行,与getTable相反,  
数组由所有列的数据组成,每个列都是由多个行组成的数组  
可以使用 返回数据[ 列号 ][ 行号 ] 获取对应的值

### sqlServerRsObject.GetRows(rows,start,fields) <a id="sqlServerRsObject.GetRows" href="#sqlServerRsObject.GetRows">&#x23;</a>
查询并返回包含结果数据的数组,所有参数可选,  
rows 指定获取行数，默认为-1，即获取所有剩下的行,0,  
@start为可选参数,可选使用以下数值：  
    _adBookmarkCurrent 0 自当前记录开始  
    _adBookmarkFirst 1 自首条记录开始  
    _adBookmarkLast 2 自最后一条记录开始  
@ields 可选用一个字符串、或字符串数组指定要获取的列,  
也可用数值，或数值数组指定要获取的列

### sqlServerRsObject.bof <a id="sqlServerRsObject.bof" href="#sqlServerRsObject.bof">&#x23;</a>
是否已经到记录集开始，没有更多数据了

### sqlServerRsObject.close() <a id="sqlServerRsObject.close" href="#sqlServerRsObject.close">&#x23;</a>
关闭记录集

### sqlServerRsObject.eof <a id="sqlServerRsObject.eof" href="#sqlServerRsObject.eof">&#x23;</a>
是否移动到记录集尾部，没有更多数据了

### sqlServerRsObject.getTable() <a id="sqlServerRsObject.getTable" href="#sqlServerRsObject.getTable">&#x23;</a>
执行SQL命令返回查询结果集数组  
每个元素代表一行,每行由N个键值对列组成  
返回值的fields成员记录了所有数据列的字段名  
结果集为空也会返回空数组,使用#操作符获取结果集长度

### sqlServerRsObject.move(numRecords,start) <a id="sqlServerRsObject.move" href="#sqlServerRsObject.move">&#x23;</a>
移动游标位置,  
注意第一条记录游标位置为0,  
@start为可选参数,可选使用以下数值：  
    _adBookmarkCurrent 0 自当前记录开始  
    _adBookmarkFirst 1 自首条记录开始  
    _adBookmarkLast 2 自最后一条记录开始

### sqlServerRsObject.nextRecordset() <a id="sqlServerRsObject.nextRecordset" href="#sqlServerRsObject.nextRecordset">&#x23;</a>
关闭当前结果集并打开下一个结果集。  
注意要小写函数名的第一个字母。  
nextRecordset 封装了大写首字母的 COM 函数 NextRecordset，  
对返回的记录集对象添加了 getTable,stepQuery 等函数。  

[返回对象:sqlServerRsObject](#sqlServerRsObject)

### sqlServerRsObject.recordCount <a id="sqlServerRsObject.recordCount" href="#sqlServerRsObject.recordCount">&#x23;</a>
获取记录总数,  
如果该值为-1，请修改为静态方式打开记录集

### sqlServerRsObject.stepQuery() <a id="sqlServerRsObject.stepQuery" href="#sqlServerRsObject.stepQuery">&#x23;</a>
执行SQL命令  
返回查询结果集第一行的数据,由键值对列组成  
无数据返回null
