aardio 文档

access 库模块帮助文档

相关范例

范例程序 / 数据库 / access 范例程序 / 数据库 / excel / SQL 操作 范例程序 / 数据库 / csv / access

access 成员列表

使用系统自带组件连接 Access 数据库,可支持 Excel 。
使用范例

access("数据库路径")

打开数据库连接。
数据库路径可以指定 mdb,xls等文件格式,
如果指定的数据库不存在将自动创建数据库文件

如果在其他参数前添加一个 false 参数,则不打开连接,仅返回连接语句。

access("数据库路径",其他连接参数)

 access("/*数据库路径(mdb,xls等)*/",{   
    ["Mode"]="Share Deny Read|Share Deny Write";   
    ["Jet OLEDB:Database Password"] = "123456";   
})

access("数据库连接语句",其他格式化参数)

access("Provider=Microsoft.Jet.OleDb.4.0;Data Source=%s;Jet OLEDB:Database Password=%s;",  
    "/test.db","/*密码*/" );

access()

返回对象:accessObject

access.escape()

转义参数指定值为用于 SQL 查询语句的参数化值

access.escapeId()

如果传入参数是文本则转换为 SQL 标识符,
返回文本首尾会添加中括号,

如果传入参数是表, 则格式化为 SQL 键值对并以 AND 为分隔符,
如果表中的值为数组,则格式化为 IN 语句

access.format(SQL语句,格式化参数...)

格式化 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语句

accessObject 成员列表

accessObject.?

可直接使用对象的成员获取ADO组件提供的COM常量
这些常量名的前缀都是 ad

accessObject.beginTrans()

启动事务,返回嵌套层数
注意如果未调用此函数开启事务,默认每条独立SQL语句仍然会自动创建独立事务

accessObject.close()

关闭数据库连接

accessObject.commitTrans()

提交事务

accessObject.connectionString

打开数据库时指定的连接串
[数据库连接串写法](https://www.connectionstrings.com/access/)

accessObject.createCommand()

返回对象:accessCmdObject

accessObject.createCommand(sql,其他格式化SQL参数)

创建命令对象
格式化规则请参考 access.format 函数说明,
格式化参数可以是一个表参数,用于替换SQL中占位符指定的参数,
SQL语句用中@前缀标明命名参数使用表参数中的名值对格式化,
SQL语句中的?或??占位符使用表参数中的数组值格式化

accessObject.dataSourceName

数据库连接串中指定的ODBC数据源

accessObject.each()

返回对象:accessRsObject

accessObject.each(sql,其他格式化参数)

for(rs in accessObject.each("select * from [表名]") ){ 
    io.print( rs("字段名").value );
}

accessObject.eachTableObject

for(tbName,tbType,tbObj in accessObject.eachTableObject() ){

}

accessObject.eachTableObject()

返回对象:ADOXCatalogTblObject

accessObject.exec(sql,其他格式化SQL参数)

执条SQL语句
格式化参数规则请参考 access.format 函数说明,
格式化参数可以是一个表参数,用于替换SQL中占位符指定的参数,
SQL语句用中@前缀标明命名参数使用表参数中的名值对格式化,
SQL语句中的?或??占位符使用表参数中的数组值格式化。

执行失败抛出异常。
执行成功返回受影响的记录行数

accessObject.existsTable("表名")

判断数据库中是否存在指定表

accessObject.findTableObject("表名")

返回表对象

accessObject.findTableObject()

返回对象:ADOXCatalogTblObject

accessObject.firstTableName()

返回数据库的第一个表名。
参数 @1 可选用一个字符串指定表类型,默认为 "TABLE"。

accessObject.firstTableObject()

返回数据库中的第一个表对象。
参数 @1 可选用一个字符串指定表类型,默认为 "TABLE"。

返回对象:ADOXCatalogTblObject

accessObject.getRows()

查询并返回包含结果数据的数组
此函数返回的数据是先列后行,与getTable相反,
数组由所有列的数据组成,每个列都是由多个行组成的数组
可以使用 返回数据[ 列号 ][ 行号 ] 获取对应的值,
也可以使用 数据.字段名[列号] 获取对应的值

返回数组的元表中使用recordCount记录了总行数,
结果集为空也会返回空数组,可使用 @.recordCount判断记录集的行数
元表中的fields字段则是记录了所有字段名的数组.

所有值后面的占位空白没有去除
可使用getTable函数获取处理过空白占位符的数据,
或参考该函数源码自行处理尾部空白

accessObject.getTable("select * from [表名]",其他格式化参数)

返回查询结果集数组
每个元素代表一行,每行由N个键值对列组成
返回值的fields成员记录了所有数据列的字段名
结果集为空也会返回空数组,使用#操作符获取结果集长度

accessObject.openRecordSet()

返回对象:accessRsObject

accessObject.openRecordSet(sql,游标类型,锁定方法,其他格式化SQL参数)

打开记录集,游标类型如下:
0:默认值,启动一个只能向前移动的游标
1:打开键集类型游标,允许任意移动,并且允许更改记录集
2:打开动态类型游标,许所有操作,其他用户对记录集的添加、删除、更改在此记录集中
3:打开原生类型游标

锁定方法如下:
1:默认值,不能改变数据
2:悲观锁,编辑时立即锁定数据源的记录
3:乐观锁,只在调用Update 方法时才锁定记
4: 乐观批更新

accessObject.rollbackTrans()

回滚事务

accessObject.setPassword("新密码","旧密码")

修改数据库密码,
如果没有旧密码第二个参数可以不写

accessObject.stepQuery("select * from [表名]",其他格式化参数)

返回查询结果集第一行的数据,由键值对列组成,
无数据返回null

格式化规则请参考 access.format 函数说明,
格式化参数可以是一个表参数,用于替换SQL中占位符指定的参数,
SQL语句用中@前缀标明命名参数使用表参数中的名值对格式化,
SQL语句中的?或??占位符使用表参数中的数组值格式化

ADOXCatalogColumnObject 成员列表

ADOXCatalogColumnObject.DefinedSize

字段大小

ADOXCatalogColumnObject.Name

列名

ADOXCatalogColumnObject.Type

类型

ADOXCatalogTblObject 成员列表

ADOXCatalogTblObject.Columns("列名")

参数也可以写数值索引

ADOXCatalogTblObject.Columns()

返回对象:ADOXCatalogColumnObject

ADOXCatalogTblObject.Indexes

索引集合

ADOXCatalogTblObject.Keys

键集合

ADOXCatalogTblObject.Name

表名

ADOXCatalogTblObject.Type

表示表类型的字符串。
例如 "TABLE", "SYSTEM TABLE", 或 "GLOBAL TEMPORARY"

ADOXCatalogTblObject.Columns 成员列表

列集合

ADOXCatalogTblObject.Columns.Count

总数

accessCmdObject 成员列表

accessCmdObject.addParameter

调用createParameter创建参数对象,
设置值并添加到SQL执行参数中
注意access的参数对象虽然必须设置正确的名字,
但实际上他只按添加顺序执行

accessCmdObject.addParameter()

返回对象:accessParameterObject

accessCmdObject.addParameter(名字,值,参数类型,字段类型,字段大小)

直接添加SQL执行参数
除名字,值以外的其他参数不必要设置
返回创建的参数对象

注意access的参数对象虽然必须设置正确的名字,
但实际上他只按添加顺序执行

accessCmdObject.bind()

参数是一个表,
可使用多个键值对批量指定SQL命令对象的多个参数,
此函数会按参数在SQL中出现的顺序逐个添加参数,
SQL语句中所有参数必须使用@前缀命名,
此函数返回命令对象自身

返回对象:accessCmdObject

accessCmdObject.cancel()

取消执行

accessCmdObject.commandText

要执行的SQL命令语句

accessCmdObject.commandType

命令类型
普通SQL为1,存储过程为4

accessCmdObject.createParameter(名字,字段类型,参数类型,字段大小,参数值)

创建参数
参数中用到的常量请使用COM对象的成员常量获取,
例如cmd.adLongVarWChar
这个函数创建的参数还需要调用parameters.append添加到执行参数中

不建议直接调用此函数,可以使用更简单的addParameter或bind函数添加参数

accessCmdObject.each()

for(rs in accessCmdObject.each() ){ 
    io.print( rs(0).value );/*执行SQL命令并遍历结果集*/
}

accessCmdObject.execute(ra,parameters.option)

执行查询,所有参数可选。
参数ra 返回受查询影响的记录的数目
参数parameters 用 SQL 语句传递的参数值
参数options 一个或者多个 CommandTypeEnum 或 ExecuteOptionEnum 值 。
返回记录集对象,execute 返回的记录集没有 getTable,stepQuery 函数。
executeRecords 返回的记录集提供 getTable,stepQuery 函数。

accessCmdObject.executeNoRecords(ra,parameters)

执行查询不返回记录集,所有参数可选。
参数ra 返回受查询影响的记录的数目
参数parameters 用 SQL 语句传递的参数值

accessCmdObject.executeRecords(ra,parameters.option)

执行查询,所有参数可选
参数ra 返回受查询影响的记录的数目
参数parameters 用 SQL 语句传递的参数值
参数options 一个或者多个 CommandTypeEnum 或 ExecuteOptionEnum 值 。
返回记录集对象,execute 返回的记录集没有 getTable,stepQuery 函数。
executeRecords 返回的记录集提供 getTable,stepQuery 函数。

accessCmdObject.executeStream(ra,parameters)

执行查询返回流,所有参数可选。
参数ra 返回受查询影响的记录的数目
参数parameters 用 SQL 语句传递的参数值

accessCmdObject.getRows()

查询并返回包含结果数据的 SafeArray 数组
此函数返回的数据是先列后行,与 getTable 相反,
数组由所有列的数据组成,每个列都是由多个行组成的数组
可以使用 返回数据[ 列号 ][ 行号 ] 获取对应的值,
也可以使用 数据.字段名[列号] 获取对应的值

返回数组的元表中使用recordCount记录了总行数,
结果集为空也会返回空数组,可使用 @.recordCount判断记录集的行数
元表中的fields字段则是记录了所有字段名的数组.

所有值后面的占位空白没有去除
可使用getTable函数获取处理过空白占位符的数据,
或参考该函数源码自行处理尾部空白

accessCmdObject.getTable()

执行SQL命令返回查询结果集数组
每个元素代表一行,每行由N个键值对列组成
返回值的fields成员记录了所有数据列的字段名
结果集为空也会返回空数组,使用#操作符获取结果集长度

accessCmdObject.parameters("字符串参数")

返回已添加的参数

accessCmdObject.stepQuery()

执行SQL命令
返回查询结果集第一行的数据,由键值对列组成
无数据返回null

accessCmdObject.parameters 成员列表

参数列表

accessCmdObject.parameters.append(参数对象)

添加参数
注意access的参数对象虽然必须设置正确的名字,
但实际上他只按添加顺序执行

accessCmdObject.parameters.count()

返回参数长度

accessCmdObject.parameters.delete(索引)

删除参数

accessCmdObject.parameters.refresh()

刷新参数

accessObject.connection 成员列表

连接对象

accessObject.connection.ConnectionString

连接串

accessObject.connection.CursorLocation

accessObject.connection.CursorLocation = 3/*adUseClient*/

accessObject.connection.Errors()

返回对象:adoConnErrObject

accessObject.connection.Errors(0)

参数指定错误索引

accessObject.connection.Errors 成员列表

错误集合

accessObject.connection.Errors.count

错误数

accessParameterObject 成员列表

accessParameterObject.direction

参数的类型,默认是adParamInput

accessParameterObject.name

参数名称

accessParameterObject.size

数据长度

accessParameterObject.value

参数值

accessRsObject 成员列表

accessRsObject.bof

是否已经到记录集开始,没有更多数据了

accessRsObject.close()

关闭记录集

accessRsObject.eof

是否移动到记录集尾部,没有更多数据了

accessRsObject.getRows

查询并返回包含结果数据的数组
此函数返回的数据是先列后行,与getTable相反,
数组由所有列的数据组成,每个列都是由多个行组成的数组
可以使用 返回数据[ 列号 ][ 行号 ] 获取对应的值

accessRsObject.getRows(rows,start,fields)

查询并返回包含结果数据的数组,所有参数可选,
rows 指定获取行数,默认为-1,即获取所有剩下的行,0,
@start为可选参数,可选使用以下数值:
_adBookmarkCurrent 0 自当前记录开始
_adBookmarkFirst 1 自首条记录开始
_adBookmarkLast 2 自最后一条记录开始
@ields 可选用一个字符串、或字符串数组指定要获取的列,
也可用数值,或数值数组指定要获取的列

accessRsObject.getTable()

返回查询结果集数组
每个元素代表一行,每行由N个键值对列组成
返回值的fields成员记录了所有数据列的字段名
结果集为空也会返回空数组,使用#操作符获取结果集长度

accessRsObject.move(numRecords,start)

移动游标位置,
注意第一条记录游标位置为0,
@start为可选参数,可选使用以下数值:
_adBookmarkCurrent 0 自当前记录开始
_adBookmarkFirst 1 自首条记录开始
_adBookmarkLast 2 自最后一条记录开始

accessRsObject.recordCount

获取记录总数,
如果该值为-1,请修改为静态方式打开记录集

accessRsObject.stepQuery()

返回查询结果集第一行的数据,由键值对列组成
无数据返回null

adoConnErrObject 成员列表

adoConnErrObject.Description

错误描述

adoConnErrObject.NativeError

数据源错误代码

adoConnErrObject.Number

错误代码

adoConnErrObject.SQLState

数据源

adoConnErrObject.Source

错误对象

自动完成常量

_adBookmarkCurrent=0
_adBookmarkFirst=1
_adBookmarkLast=2
_adOpenDynamic=2
_adOpenForwardOnly=0
_adOpenKeyset=1
_adOpenStatic=3
_adOpenUnspecified=-1

Markdown 格式