# sqlite.base 库模块帮助文档

## sqlite 成员列表 <a id="sqlite" href="#sqlite">&#x23;</a>

SQLite（嵌入式数据库）支持库  
此支持库使用的 SQLite 组件体积较小，但并非最新版。  
功能一般够用，但不支持一些 SQLite 新版才有的特性。  

如果将 sqlite 导入语句替换为 sqlite.latest 扩展库导入语句，  
则会改用新版 SQLite 组件，体积会大一些，但支持的功能更多一些。  
其他代码中的 sqlite 不需要替换为 sqlite.latest  

如果需要自定义 SQLite 版本，请参考 sqlite.latest 扩展库源码

### sqlite(":memory:") <a id="sqlite(":memory:")" href="#sqlite(":memory:")">&#x23;</a>
创建内存数据库

### sqlite("\数据库路径") <a id="sqlite("\数据库路径")" href="#sqlite("\数据库路径")">&#x23;</a>
参数一指定数据库路径,支持自动创建数据库文件.  
第二个参数(可选参数)指定数据库密钥,sqlite.aes128或sqlite.aes256支持该参数.  
第三个参数(可选参数)使用一个或多个_SQLITE_OPEN_前缀常量指定连接选项  
默认启用多线程模式,多线程共用单个数据连接不安全,否则就是安全的  
多线程模式可并发读,但不可同时写入

### sqlite("file:数据库路径) <a id="sqlite("file:数据库路径)" href="#sqlite("file:数据库路径)">&#x23;</a>
使用 URI 指定数据库路径与参数。  
参数@2 可选用表指定 URI 参数，或用字符串指定密钥。  
也可以在参数 @1 的 URI 后面直接写参数。  
文档 https://www.sqlite.org/uri.html

### sqlite() <a id="sqlite()" href="#sqlite()">&#x23;</a>
[返回对象:sqliteConnObject](#sqliteConnObject)

### sqlite.ABORT <a id="sqlite.ABORT" href="#sqlite.ABORT">&#x23;</a>
4 //回调函数请求中止

### sqlite.AUTH <a id="sqlite.AUTH" href="#sqlite.AUTH">&#x23;</a>
23 //认证禁止

### sqlite.BUSY <a id="sqlite.BUSY" href="#sqlite.BUSY">&#x23;</a>
5 //数据库文件被锁定

### sqlite.CANTOPEN <a id="sqlite.CANTOPEN" href="#sqlite.CANTOPEN">&#x23;</a>
14 //不能打开数据库文件

### sqlite.CONSTRAINT <a id="sqlite.CONSTRAINT" href="#sqlite.CONSTRAINT">&#x23;</a>
19 //因约束违背而中止

### sqlite.CORRUPT <a id="sqlite.CORRUPT" href="#sqlite.CORRUPT">&#x23;</a>
11 //数据库文件变形

### sqlite.DONE <a id="sqlite.DONE" href="#sqlite.DONE">&#x23;</a>
101 //sqlite3_step()完成执行,已无数据

### sqlite.EMPTY <a id="sqlite.EMPTY" href="#sqlite.EMPTY">&#x23;</a>
16 //数据库是空的

### sqlite.ERROR <a id="sqlite.ERROR" href="#sqlite.ERROR">&#x23;</a>
1 //SQL错误或数据库不存在

### sqlite.FORMAT <a id="sqlite.FORMAT" href="#sqlite.FORMAT">&#x23;</a>
24 //附属数据库格式错误

### sqlite.FULL <a id="sqlite.FULL" href="#sqlite.FULL">&#x23;</a>
13 //插入失败因为数据库满

### sqlite.INTERNAL <a id="sqlite.INTERNAL" href="#sqlite.INTERNAL">&#x23;</a>
2 //SQLite内部逻辑错误(没有使用)

### sqlite.INTERRUPT <a id="sqlite.INTERRUPT" href="#sqlite.INTERRUPT">&#x23;</a>
9 //操作被sqlie3_interrupt()中止

### sqlite.IOERR <a id="sqlite.IOERR" href="#sqlite.IOERR">&#x23;</a>
10 //磁盘I=O错误

### sqlite.LOCKED <a id="sqlite.LOCKED" href="#sqlite.LOCKED">&#x23;</a>
6 //数据库中的一表被锁定

### sqlite.MISMATCH <a id="sqlite.MISMATCH" href="#sqlite.MISMATCH">&#x23;</a>
20 //数据类型不匹配

### sqlite.MISUSE <a id="sqlite.MISUSE" href="#sqlite.MISUSE">&#x23;</a>
21 //库使用方法不当

### sqlite.NOLFS <a id="sqlite.NOLFS" href="#sqlite.NOLFS">&#x23;</a>
22 //主机不支持库中操作系统功能

### sqlite.NOMEM <a id="sqlite.NOMEM" href="#sqlite.NOMEM">&#x23;</a>
7 //malloc()分配堆失败

### sqlite.NOTADB <a id="sqlite.NOTADB" href="#sqlite.NOTADB">&#x23;</a>
26 //打开非数据库文件

### sqlite.NOTFOUND <a id="sqlite.NOTFOUND" href="#sqlite.NOTFOUND">&#x23;</a>
12 //表或纪录没有找到(没有使用)

### sqlite.OK <a id="sqlite.OK" href="#sqlite.OK">&#x23;</a>
0 //成功执行

### sqlite.PERM <a id="sqlite.PERM" href="#sqlite.PERM">&#x23;</a>
3 //访问许可禁止

### sqlite.PROTOCOL <a id="sqlite.PROTOCOL" href="#sqlite.PROTOCOL">&#x23;</a>
15 //数据库锁协议错误

### sqlite.RANGE <a id="sqlite.RANGE" href="#sqlite.RANGE">&#x23;</a>
25 //sqlite3_bind()第2个参数超出范围

### sqlite.READONLY <a id="sqlite.READONLY" href="#sqlite.READONLY">&#x23;</a>
8 //企图写只读数据库

### sqlite.ROW <a id="sqlite.ROW" href="#sqlite.ROW">&#x23;</a>
100 //sqlite3_step()有另一行数据就绪

### sqlite.SCHEMA <a id="sqlite.SCHEMA" href="#sqlite.SCHEMA">&#x23;</a>
17 //数据库模式改变

### sqlite.TOOBIG <a id="sqlite.TOOBIG" href="#sqlite.TOOBIG">&#x23;</a>
18 //单行数据过多(没有使用)

### sqlite._dll <a id="sqlite._dll" href="#sqlite._dll">&#x23;</a>
[返回对象:dllModuleObject](https://www.aardio.com/zh-cn/doc/library-reference/raw/_.html#dllModuleObject)

### sqlite.aes128 <a id="sqlite.aes128" href="#sqlite.aes128">&#x23;</a>
支持AES128位数据加密版本sqlite支持库

### sqlite.aes128("\数据库路径") <a id="sqlite.aes128" href="#sqlite.aes128">&#x23;</a>
参数一指定数据库路径,支持自动创建数据库文件.  
第二个参数(可选参数)指定数据库密钥,sqlite.aes128或sqlite.aes256支持该参数.

### sqlite.aes128() <a id="sqlite.aes128" href="#sqlite.aes128">&#x23;</a>
[返回对象:sqliteConnObject](#sqliteConnObject)

### sqlite.aes256 <a id="sqlite.aes256" href="#sqlite.aes256">&#x23;</a>
支持AES256位数据加密版本sqlite支持库

### sqlite.aes256("\数据库路径") <a id="sqlite.aes256" href="#sqlite.aes256">&#x23;</a>
参数一指定数据库路径,支持自动创建数据库文件.  
第二个参数(可选参数)指定数据库密钥,sqlite.aes128或sqlite.aes256支持该参数.

### sqlite.aes256() <a id="sqlite.aes256" href="#sqlite.aes256">&#x23;</a>
[返回对象:sqliteConnObject](#sqliteConnObject)

### sqlite.assertf(/*调用sqlite API函数*/) <a id="sqlite.assertf" href="#sqlite.assertf">&#x23;</a>
第一个参数是API返回的状态值   
如果发生错误则抛出异常终断程序,并显示错误信息

### sqlite.autoExtension <a id="sqlite.autoExtension" href="#sqlite.autoExtension">&#x23;</a>
注意 SQLite 扩展，对之后打开的数据库有效。

### sqlite.autoExtension(entryPoint) <a id="sqlite.autoExtension" href="#sqlite.autoExtension">&#x23;</a>
- 参数 @entryPoint 指定扩展入口函数（使用 DLL 模块的 api 方法获取）。  
在加载成功后返回 true。  

用这种方式需要自己管理 DLL 生命周期，并避免 DLL 被释放后 SQLite 还在用它。  
更好的方法是在参数中指定入口函数名，以及 DLL 加载路径（或内存数据），  
让 sqlite.autoExtension 加载 DLL 并自行管理 DLL 的生命周期。

### sqlite.autoExtension(initFunc,dllPath,shareName,cc) <a id="sqlite.autoExtension" href="#sqlite.autoExtension">&#x23;</a>
- 参数 @initFunc 指定扩展入口函数名，例如 "sqlite3_extension_init"。  
- 参数 @dllPath 指定 DLL 路径或者 DLL 内存数据（在 DLL 路径前加 `$` 操作符）。  
- 如果指定内存 DLL，可选用 @shareName 指定跨线程共享名称。  
- 可选用 @cc 参数指定调用约定（默认为 `cdecl`）。  

成功返回加载的 DLL 对象（不要主动释放此 DLL，  
sqlite3 会保持引用此 DLL 以避免被回收）。

### sqlite.busy_handler <a id="sqlite.busy_handler" href="#sqlite.busy_handler">&#x23;</a>
`dll.api("sqlite3_busy_handler","int(POINTER pDB,pointer handle,pointer)");`

### sqlite.busy_timeout <a id="sqlite.busy_timeout" href="#sqlite.busy_timeout">&#x23;</a>
`dll.api("sqlite3_busy_timeout","int(POINTER pDB,int ms)");`

### sqlite.changes <a id="sqlite.changes" href="#sqlite.changes">&#x23;</a>
`dll.api("sqlite3_changes","int(pointer db)");`

### sqlite.checkResult(failed,err,level) <a id="sqlite.checkResult" href="#sqlite.checkResult">&#x23;</a>
参数一: sqlite API的第一个返回值  
参数二(可选参数):sqlite返回的错误信息指针  
参数三(可选参数): 抛出异常的调用级别,2为调用checkResult的函数,3为调用当前函数的函数

### sqlite.close <a id="sqlite.close" href="#sqlite.close">&#x23;</a>
`dll.api("sqlite3_close","int(pointer db)");`

### sqlite.escape() <a id="sqlite.escape" href="#sqlite.escape">&#x23;</a>
转义参数指定值为用于 SQL 查询语句的参数化值

### sqlite.escapeId() <a id="sqlite.escapeId" href="#sqlite.escapeId">&#x23;</a>
如果传入参数是文本则转换为 SQL 标识符,  
返回文本首尾会添加反引号,  

如果传入参数是表, 则格式化为 SQL 键值对并以 AND 为分隔符,  
如果表中的值为数组,则格式化为 IN 语句

### sqlite.exec <a id="sqlite.exec" href="#sqlite.exec">&#x23;</a>
`dll.api("sqlite3_exec","int(POINTER db,STRING sql,pointer callback,pointer callback_arg,pointer &)");`

### sqlite.finalize <a id="sqlite.finalize" href="#sqlite.finalize">&#x23;</a>
`dll.api("sqlite3_finalize","int(POINTER stmt)");`

### sqlite.format(SQL语句,格式化参数...) <a id="sqlite.format" href="#sqlite.format">&#x23;</a>
格式化 SQL 查询语句。  
所有需要格式化 SQL 语句的函数调用此函数格式化 SQL语句,  
如果格式化参数不是表则调用 string.format格式化,否则按以下规则格式化:  

SQL语句中?或??占位符使用表的数组元素格式化,  
@字符开始的命名参数使用表的名值对元素格式化,  
其中??格式化为标识符,其他占位符格式化为参数值。  

字符串转为SQL安全转义字符串,buffer转为X'4D7953514C'格式,  
数组则自动展开为列表,例如{'a', 'b'}格式化为'a', 'b'  
嵌套数组则格式化为分组列表,例如{{'a', 'b'}, {'c', 'd'}} 格式化为 ('a', 'b'), ('c', 'd')  
非数组的命名表，则格式化为 SQL 键值对,默认以逗号为分隔符,  
??占位符格式化 SQL 键值对则以 AND 为分隔符,并将数组值转换为IN语句

### sqlite.last_insert_rowid <a id="sqlite.last_insert_rowid" href="#sqlite.last_insert_rowid">&#x23;</a>
`dll.api("sqlite3_last_insert_rowid","int(pointer db)");`

### sqlite.lasterr(db,errcode) <a id="sqlite.lasterr" href="#sqlite.lasterr">&#x23;</a>
参数1:指定数据库连接句柄,  
参数2:可选使用此参数指定错误代码,  
返回最后一次发生错误的错误信息,以及错误代码.

### sqlite.prepare <a id="sqlite.prepare" href="#sqlite.prepare">&#x23;</a>
`dll.api("sqlite3_prepare","int(POINTER db,string szSql,int nByte,pointer &stmt,pointer& pzTail)");`

### sqlite.prepare2 <a id="sqlite.prepare2" href="#sqlite.prepare2">&#x23;</a>
`dll.api("sqlite3_prepare_v2","int(POINTER db,string szSql,int nByte,pointer &stmt,pointer& pzTail)");`

### sqlite.reset <a id="sqlite.reset" href="#sqlite.reset">&#x23;</a>
`dll.api("sqlite3_reset","int(POINTER stmt)");`

### sqlite.step <a id="sqlite.step" href="#sqlite.step">&#x23;</a>
`dll.api("sqlite3_step","int(POINTER stmt)");`

### sqlite.time(表示时间的字符串或数值) <a id="sqlite.time" href="#sqlite.time">&#x23;</a>
参数可以是时间数值、时间字符串、或其他datetime对象  
返回time对象,默认使用格式化串"%Y-%m-%d %H:%M:%S"

### sqlite.version() <a id="sqlite.version" href="#sqlite.version">&#x23;</a>
返回版本号数值,以及文本值

### sqlite.wal_checkpoint <a id="sqlite.wal_checkpoint" href="#sqlite.wal_checkpoint">&#x23;</a>
`dll.api("sqlite3_wal_checkpoint","int(POINTER pDB,pointer zDb)");`

## sqlite.bind 成员列表 <a id="sqlite.bind" href="#sqlite.bind">&#x23;</a>

### sqlite.bind.	blob <a id="sqlite.bind.	blob" href="#sqlite.bind.	blob">&#x23;</a>
`dll.api("sqlite3_bind_blob","int(pointer stmt, int, pointer, int n, pointer )");`

### sqlite.bind.clear <a id="sqlite.bind.clear" href="#sqlite.bind.clear">&#x23;</a>
`dll.api("sqlite3_clear_bindings","int(pointer stmt)");`

### sqlite.bind.double <a id="sqlite.bind.double" href="#sqlite.bind.double">&#x23;</a>
`dll.api("sqlite3_bind_double","int(pointer stmt, int, double)");`

### sqlite.bind.int <a id="sqlite.bind.int" href="#sqlite.bind.int">&#x23;</a>
`dll.api("sqlite3_bind_int","int(pointer stmt, int, int)");`

### sqlite.bind.long64 <a id="sqlite.bind.long64" href="#sqlite.bind.long64">&#x23;</a>
`dll.sqlite3_bind_int64;`

### sqlite.bind.parameter_index <a id="sqlite.bind.parameter_index" href="#sqlite.bind.parameter_index">&#x23;</a>
`dll.api("sqlite3_bind_parameter_index","int(pointer stmt, string zName)");`

### sqlite.bind.text <a id="sqlite.bind.text" href="#sqlite.bind.text">&#x23;</a>
`dll.api("sqlite3_bind_text","int(pointer stmt, int, string, int n,pointer )");`

### sqlite.bind.text16 <a id="sqlite.bind.text16" href="#sqlite.bind.text16">&#x23;</a>
`dll.api("sqlite3_bind_text16","int(pointer stmt, int,ustring, int, pointer )");`

### sqlite.bind.value <a id="sqlite.bind.value" href="#sqlite.bind.value">&#x23;</a>
`dll.api("sqlite3_bind_value","int(pointer stmt, int, pointer)");`

### sqlite.bind.zeroblob <a id="sqlite.bind.zeroblob" href="#sqlite.bind.zeroblob">&#x23;</a>
`dll.api("sqlite3_bind_zeroblob","int(pointer stmt, int, int n)");`

## sqlite.bind.bind 成员列表 <a id="sqlite.bind.bind" href="#sqlite.bind.bind">&#x23;</a>

### sqlite.bind.bind.null <a id="sqlite.bind.bind.null" href="#sqlite.bind.bind.null">&#x23;</a>
`dll.api("sqlite3_bind_null","int(pointer stmt, int)");`

## sqlite.column 成员列表 <a id="sqlite.column" href="#sqlite.column">&#x23;</a>

### sqlite.column.	_blob <a id="sqlite.column.	_blob" href="#sqlite.column.	_blob">&#x23;</a>
`dll.api("sqlite3_column_blob","pointer(POINTER stmt, int iCol)");`

### sqlite.column.blob(stmt,iCol) <a id="sqlite.column.blob" href="#sqlite.column.blob">&#x23;</a>
读取二进制数据,并返回字节串（buffer 类型）,  
如果存储的是一个序列化后的table对象,则返回table对象.

### sqlite.column.bytes <a id="sqlite.column.bytes" href="#sqlite.column.bytes">&#x23;</a>
`dll.api("sqlite3_column_bytes","int(POINTER stmt, int iCol)");`

### sqlite.column.bytes16 <a id="sqlite.column.bytes16" href="#sqlite.column.bytes16">&#x23;</a>
`dll.api("sqlite3_column_bytes16","int(POINTER stmt, int iCol)");`

### sqlite.column.count <a id="sqlite.column.count" href="#sqlite.column.count">&#x23;</a>
`dll.api("sqlite3_column_count","int(POINTER stmt)");`

### sqlite.column.double <a id="sqlite.column.double" href="#sqlite.column.double">&#x23;</a>
`dll.api("sqlite3_column_double","double(POINTER stmt, int iCol)");`

### sqlite.column.int <a id="sqlite.column.int" href="#sqlite.column.int">&#x23;</a>
`dll.api("sqlite3_column_int64","long(POINTER stmt, int iCol)");`

### sqlite.column.name(stmt,iCol) <a id="sqlite.column.name" href="#sqlite.column.name">&#x23;</a>
返回字段名

### sqlite.column.queryValue(iCol) <a id="sqlite.column.queryValue" href="#sqlite.column.queryValue">&#x23;</a>
返回指定列的数据,自动识别数据类型

### sqlite.column.text(stmt,iCol) <a id="sqlite.column.text" href="#sqlite.column.text">&#x23;</a>
返回文本,自动由UTF8转换为ANSI

### sqlite.column.text16 <a id="sqlite.column.text16" href="#sqlite.column.text16">&#x23;</a>
`dll.api("sqlite3_column_text16","pointer(POINTER stmt, int iCol)");`

### sqlite.column.type(stmt,iCol) <a id="sqlite.column.type" href="#sqlite.column.type">&#x23;</a>
返回类型ID,以及类型名

### sqlite.column.typeName[类型ID] <a id="sqlite.column.typeName[类型ID]" href="#sqlite.column.typeName[类型ID]">&#x23;</a>
根据类型ID,返回类型名

### sqlite.column.value <a id="sqlite.column.value" href="#sqlite.column.value">&#x23;</a>
`dll.api("sqlite3_column_value","int(POINTER stmt, int iCol)");`

## sqlite.formatResult 成员列表 <a id="sqlite.formatResult" href="#sqlite.formatResult">&#x23;</a>

### sqlite.formatResult.(failed,err) <a id="sqlite.formatResult.(failed,err)" href="#sqlite.formatResult.(failed,err)">&#x23;</a>
参数一: sqlite API的第一个返回值  
参数二(可选参数):sqlite返回的错误信息指针  
对于原始Sqlite API返回的err指针,必须调用此函数转换为字符串并释放该指针

## sqlite.table 成员列表 <a id="sqlite.table" href="#sqlite.table">&#x23;</a>

### sqlite.table.	get <a id="sqlite.table.	get" href="#sqlite.table.	get">&#x23;</a>
`dll.api("sqlite3_get_table","int(POINTER db,string zSql,pointer &pazResult,int &pnRow,int &pnColumn,pointer &errmsg)");`

### sqlite.table.free <a id="sqlite.table.free" href="#sqlite.table.free">&#x23;</a>
`dll.api("sqlite3_free_table","int(pointer azResult)")`

## sqliteConnObject 成员列表 <a id="sqliteConnObject" href="#sqliteConnObject">&#x23;</a>

### sqliteConnObject.beginTrans("EXCLUSIVE") <a id="sqliteConnObject.beginTrans" href="#sqliteConnObject.beginTrans">&#x23;</a>
开始事务  
尝试获取EXCLUSIVE锁(保证没有其他连接)

### sqliteConnObject.beginTrans("IMMEDIATE") <a id="sqliteConnObject.beginTrans" href="#sqliteConnObject.beginTrans">&#x23;</a>
开始事务  
尝试获取RESERVED锁(其他连接可读)

### sqliteConnObject.beginTrans() <a id="sqliteConnObject.beginTrans" href="#sqliteConnObject.beginTrans">&#x23;</a>
开始DEFERRED事务  
默认不获取任何锁,直到需要锁的时候才获取锁,  
开启事务以后,可使用rollbackTrans()函数撤消所有更改,  
使用commitTrans()函数提交所有更改.  
使用此函数可以避免sqlite为每个操作创建一个默认事务  
批量操作数据库时可显著提升sqlite执行效率.

### sqliteConnObject.busyHandler <a id="sqliteConnObject.busyHandler" href="#sqliteConnObject.busyHandler">&#x23;</a>

```aardio
sqliteConnObject.busyHandler(   
	function(strBack,count) {  
		sleep(1);  
		return count < 1000; /*重试次数*/  
	},strBack  
)
```

### sqliteConnObject.busyTimeout(10000) <a id="sqliteConnObject.busyTimeout" href="#sqliteConnObject.busyTimeout">&#x23;</a>
数据锁定冲突时的重试时间,以毫秒为单位,成功返回true  
busyHandler()函数控制重试次数,busyTimeout()函数控制重试时间  
这两个函数可相互影响,设置一个必然然取消另一个

### sqliteConnObject.changes() <a id="sqliteConnObject.changes" href="#sqliteConnObject.changes">&#x23;</a>
返回数据库最近一次运行exec()所改变的行数

### sqliteConnObject.close() <a id="sqliteConnObject.close" href="#sqliteConnObject.close">&#x23;</a>
关闭数据库连接  
在线程结束时,此函数也会自动调用

### sqliteConnObject.commitTrans() <a id="sqliteConnObject.commitTrans" href="#sqliteConnObject.commitTrans">&#x23;</a>
提交事务

### sqliteConnObject.config <a id="sqliteConnObject.config" href="#sqliteConnObject.config">&#x23;</a>
配置数据库。

### sqliteConnObject.config(id,arg1,arg2,...) <a id="sqliteConnObject.config" href="#sqliteConnObject.config">&#x23;</a>
sqlite3_db_config 配置接口。  
用法请参考 SQLite 文档。  

参数 @id 必须是数值。  
如果 @id 为 1001 至 1022 则 arg2 默认为 {int value}，执行成功返回 arg2.value 。  

此函数执行失败会抛出异常。  
注意旧版本不支持新版选项 ID。  
改用 sqlite.latest 或 sqlite.ciphers 扩展库可支持更多选项。

### sqliteConnObject.config(name,value) <a id="sqliteConnObject.config" href="#sqliteConnObject.config">&#x23;</a>
配置数据库。  
参数 @name 指定配置名（字符串）,参数 @value 指定配置值。  
仅 sqlite.ciphers 等 sqlite 增强扩展库支持此用法。  
用法参考相关扩展库文档。  

成功返回当前配置值，失败返回 -1。  
@name 指定要修改的配置名，也可以指定包含多个配置名值对的表。  
@value 指定配置值，不指定值则用返回当前值。

### sqliteConnObject.configCipher <a id="sqliteConnObject.configCipher" href="#sqliteConnObject.configCipher">&#x23;</a>
配置加密算法参数。  
仅 sqlite.ciphers 等 sqlite 增强扩展库支持此函数。  
用法参考相关扩展库文档。

### sqliteConnObject.configCipher(cipherName,name,value) <a id="sqliteConnObject.configCipher" href="#sqliteConnObject.configCipher">&#x23;</a>
配置加密算法参数。  
成功返回当前配置值，失败返回 -1。  
@cipherName 指定加密算法名称。

### sqliteConnObject.db <a id="sqliteConnObject.db" href="#sqliteConnObject.db">&#x23;</a>
当前打开的数据库连接对象

### sqliteConnObject.each(sql,params) <a id="sqliteConnObject.each" href="#sqliteConnObject.each">&#x23;</a>

```aardio
for 字段名,字段名2 in sqliteConnObject.each("SELECT * from [表名] ORDER BY 排序字段 DESC LIMIT 长度 OFFSET 开始位置") {
	print( 字段名,字段名2 )/*参数 @params 的使用规则与 getTable 方法的 @params 参数相同*/
}
```

### sqliteConnObject.each_sqlite_master(sql,params) <a id="sqliteConnObject.each_sqlite_master" href="#sqliteConnObject.each_sqlite_master">&#x23;</a>

```aardio
for Type,name,tbl_name,rootpage,sql in sqliteConnObject.each("SELECT * from [sqlite_master]") {
	print( Type,name,tbl_name,rootpage,sql )
}
```

### sqliteConnObject.enableLoadExtension(true) <a id="sqliteConnObject.enableLoadExtension" href="#sqliteConnObject.enableLoadExtension">&#x23;</a>
允许加载扩展，执行成功则返回值为当前设置值。  

SQLite 版本 低于 v3.12.0 时，会同时允许 C API / SQL 加载扩展。  
这存在 SQL 注入风险，而 SQLite 新版本仅安全地允许 C API 加载扩展。  

低版本 SQLite 请改用更安全的 sqlite.autoExtension 注册扩展。  
实际上 sqlite.autoExtension 更方便，而且支持内存 DLL。  
但 sqlite.autoExtension 必须在打开 SQLite 数据库前调用，  
注意注册的扩展对后续打开的数据库自动生效。

### sqliteConnObject.enum(sql,格式化参数...) <a id="sqliteConnObject.enum" href="#sqliteConnObject.enum">&#x23;</a>

```aardio
sqliteConnObject.enum(sql,格式化参数...enum(   
	/*sql*/,  
	function(tname,tvalue){  
		for(i=1;#tname;1){   
			io.print(tname[i],tvalue[i])  
		}  

	}  
)
```

### sqliteConnObject.exec("字符串参数") <a id="sqliteConnObject.exec" href="#sqliteConnObject.exec">&#x23;</a>
执行SQL 语句,出错则抛出异常,  
可选增加一个或多个格式化参数,  
格式化规则请参考 sqlite.format 函数说明,  
格式化参数可以是一个表参数,用于替换SQL中占位符指定的参数,  
SQL语句用@或:前缀标明的命名参数使用表的名值对成员格式化,  
SQL语句中的?或??占位符使用参数表的数组成员格式化,??用于标识符或WHERE条件表

### sqliteConnObject.exec_create_index <a id="sqliteConnObject.exec_create_index" href="#sqliteConnObject.exec_create_index">&#x23;</a>

```aardio
sqliteConnObject.exec("CREATE INDEX 索引名字 ON 表名字(索引字段名字)")  
//建立索引可加快该字段查询速度.
```

### sqliteConnObject.exec_create_table <a id="sqliteConnObject.exec_create_table" href="#sqliteConnObject.exec_create_table">&#x23;</a>

```aardio
sqliteConnObject.exec("CREATE TABLE 表名(   
	ID INTEGER PRIMARY KEY AUTOINCREMENT,    
	数值字段名 INTEGER,  
	浮点字段名 REAL,  
	文本字段名 TEXT,  
	二进制字段名 BLOB,   
	非空字段名 NOT NULL DEFAULT '默认值',  
	动态类型字段名,  
	UNIQUE (ID)   
	);"  
)
```

### sqliteConnObject.exec_delete_sequence <a id="sqliteConnObject.exec_delete_sequence" href="#sqliteConnObject.exec_delete_sequence">&#x23;</a>

```aardio
sqliteConnObject.exec("DELETE FROM sqlite_sequence WHERE name = '表名'")  
//自增ID置0
```

### sqliteConnObject.exec_delete_table <a id="sqliteConnObject.exec_delete_table" href="#sqliteConnObject.exec_delete_table">&#x23;</a>

```aardio
sqliteConnObject.exec("DELETE FROM 表名 ")  
//清空表
```

### sqliteConnObject.exec_drop_table <a id="sqliteConnObject.exec_drop_table" href="#sqliteConnObject.exec_drop_table">&#x23;</a>

```aardio
sqliteConnObject.exec("DROP table 表名 ")  
//删除表
```

### sqliteConnObject.exec_free_memory <a id="sqliteConnObject.exec_free_memory" href="#sqliteConnObject.exec_free_memory">&#x23;</a>

```aardio
sqliteConnObject.exec("VACUUM")//DELETE表后必须调用此语句才能释放空间
```

### sqliteConnObject.exec_insert <a id="sqliteConnObject.exec_insert" href="#sqliteConnObject.exec_insert">&#x23;</a>

```aardio
sqliteConnObject.exec("INSERT INTO 表名(字段名) VALUES( 值 )")  
//插入数据到表中
```

### sqliteConnObject.exec_insert_where_not_exists <a id="sqliteConnObject.exec_insert_where_not_exists" href="#sqliteConnObject.exec_insert_where_not_exists">&#x23;</a>

```aardio
sqliteConnObject.exec("INSERT INTO 表名(字段名) SELECT '插入值' WHERE NOT EXISTS(SELECT * from 表名 WHERE 条件字段名=查询值);")  
//如果符合条件的数据不存在则插入新的数据
```

### sqliteConnObject.exec_journal_mode_delete <a id="sqliteConnObject.exec_journal_mode_delete" href="#sqliteConnObject.exec_journal_mode_delete">&#x23;</a>

```aardio
sqliteConnObject.exec("journal_mode=DELETE;")
```

### sqliteConnObject.exec_journal_mode_wal <a id="sqliteConnObject.exec_journal_mode_wal" href="#sqliteConnObject.exec_journal_mode_wal">&#x23;</a>

```aardio
sqliteConnObject.exec("PRAGMA journal_mode=WAL;")
```

### sqliteConnObject.exec_replace <a id="sqliteConnObject.exec_replace" href="#sqliteConnObject.exec_replace">&#x23;</a>

```aardio
sqliteConnObject.exec("REPLACE INTO [表名] (字段名, 字段名2) VALUES (值, 值2)")  
//如果该表有一个主键,那么当主键值相等的时候,该行数据不存在执行插入,存在则执行更新操作
```

### sqliteConnObject.exec_update <a id="sqliteConnObject.exec_update" href="#sqliteConnObject.exec_update">&#x23;</a>

```aardio
sqliteConnObject.exec("UPDATE 表名 SET 更新字段 = '更新值' WHERE 条件字段 = 条件值;");
```

### sqliteConnObject.existsTable("字符串参数") <a id="sqliteConnObject.existsTable" href="#sqliteConnObject.existsTable">&#x23;</a>
判断指定的表是否存在

### sqliteConnObject.getTable(sql,params) <a id="sqliteConnObject.getTable" href="#sqliteConnObject.getTable">&#x23;</a>

```aardio
sqliteConnObject.getTable("SELECT * FROM [表名] /*SQL 语句*/")/*  
返回包含行记录组成的 table 数组对象，  
每行是由列名、值组成的 table 表对象。  
如果指定了可选参数 @2:  
- 参数 @2 不是表则用 string.format 格式化所有参数  
- 如果 SQL 使用 `@` 前缀指定了命名参数或者参数 @2 包含数组元素，  
则参数 @2 使用 table 指定 SQLite 参数化查询的值，`?` 占位符默认表示匿名参数。  

	如果 SQL 中存在 `sqliteConnObject` 占位符则  
	则会改用 sqlite.format 函数单独格式化这些  `sqliteConnObject` 与 `?` 占位符。*/
```

### sqliteConnObject.key("字符串参数") <a id="sqliteConnObject.key" href="#sqliteConnObject.key">&#x23;</a>
输入并验证数据库密钥  
成功返回true,失败返回false,错误信息,错误代码  
该函数需要使用支持加密的DLL组件重新编译sqlite库

### sqliteConnObject.lastInsertRowid() <a id="sqliteConnObject.lastInsertRowid" href="#sqliteConnObject.lastInsertRowid">&#x23;</a>
获取最后一次插入操作添加记录的ID  
作用类似MSSQL的@@IDENTITY

### sqliteConnObject.lasterr() <a id="sqliteConnObject.lasterr" href="#sqliteConnObject.lasterr">&#x23;</a>
返回最后一次发生错误的错误信息,以及错误代码

### sqliteConnObject.loadExtension(dllPath,entryPoint) <a id="sqliteConnObject.loadExtension" href="#sqliteConnObject.loadExtension">&#x23;</a>
加载扩展。  
此函数会自动调用 enableLoadExtension 方法启用扩展支持。  
SQLite 版本 低于 v3.12.0 时，请改用更安全的 sqlite.autoExtension 注册扩展。  

-参数 @dllPath 指定插件路径，必须包含 `.dll` 后缀，此函数会自动移除后缀。  
必须指定 32 位插件。  
-参数 @entryPoint 指定入口函数名，可选参数。  

成功返回 true，失败返回 false,错误信息

### sqliteConnObject.prepare("SELECT * FROM [表名] WHERE 字段名=@参数值") <a id="sqliteConnObject.prepare" href="#sqliteConnObject.prepare">&#x23;</a>
编译 SQL 预处理命令。  
1、如果参数@2为表对象，参数表中的数组成员用于格式化 SQL 语句中的??占位符,  
2、否则调用 string.format 格式化所有参数。

### sqliteConnObject.prepare() <a id="sqliteConnObject.prepare" href="#sqliteConnObject.prepare">&#x23;</a>
[返回对象:sqliteStmtObject](#sqliteStmtObject)

### sqliteConnObject.prepare_insert <a id="sqliteConnObject.prepare_insert" href="#sqliteConnObject.prepare_insert">&#x23;</a>

```aardio
sqliteConnObject.prepare("INSERT INTO [表名] VALUES (?1,?2,?3,?4);")  
//创建插入数据SQL命令对象,问号表示参数,可在问号后指定索引
```

### sqliteConnObject.prepare_select_distinct <a id="sqliteConnObject.prepare_select_distinct" href="#sqliteConnObject.prepare_select_distinct">&#x23;</a>

```aardio
sqliteConnObject.prepare("SELECT DISTINCT 去重字段 FROM [表名]")
```

### sqliteConnObject.rekey("字符串参数") <a id="sqliteConnObject.rekey" href="#sqliteConnObject.rekey">&#x23;</a>
添加、清空、重设数据库密钥  
成功返回true,失败返回false,错误信息,错误代码  
该函数需要使用支持加密的DLL组件重新编译sqlite库

### sqliteConnObject.rollbackTrans() <a id="sqliteConnObject.rollbackTrans" href="#sqliteConnObject.rollbackTrans">&#x23;</a>
回滚事务,取消所有修改

### sqliteConnObject.stepQuery(sql,params) <a id="sqliteConnObject.stepQuery" href="#sqliteConnObject.stepQuery">&#x23;</a>

```aardio
sqliteConnObject.stepQuery("SELECT * FROM [表名] /*SQL 语句*/")/*  
查询并返回首行数据（名值对格式）,失败返回 null ,状态码。\如果指定了可选参数 @2:  
- 参数 @2 不是表则用 string.format 格式化所有参数  
- 如果 SQL 使用 `@` 前缀指定了命名参数或者参数 @2 包含数组元素，  
则参数 @2 使用 table 指定 SQLite 参数化查询的值，`?` 占位符默认表示匿名参数。  

	如果 SQL 中存在 `sqliteConnObject` 占位符则  
	则会改用 sqlite.format 函数单独格式化这些  `sqliteConnObject` 与 `?` 占位符。*/
```

### sqliteConnObject.stepResult(sql,params) <a id="sqliteConnObject.stepResult" href="#sqliteConnObject.stepResult">&#x23;</a>

```aardio
sqliteConnObject.stepResult("SELECT * FROM [表名] /*SQL 语句*/")/*  
查询并返回首行数据（数组格式）,失败返回 null,状态码。  
如果指定了可选参数 @2:  
- 参数 @2 不是表则用 string.format 格式化所有参数  
- 如果 SQL 使用 `@` 前缀指定了命名参数或者参数 @2 包含数组元素，  
则参数 @2 使用 table 指定 SQLite 参数化查询的值，`?` 占位符默认表示匿名参数。  

	如果 SQL 中存在 `sqliteConnObject` 占位符则  
	则会改用 sqlite.format 函数单独格式化这些  `sqliteConnObject` 与 `?` 占位符。*/
```

### sqliteConnObject.walCheckpoint() <a id="sqliteConnObject.walCheckpoint" href="#sqliteConnObject.walCheckpoint">&#x23;</a>
执行checkpoint操作时,WAL日志文件内容被写回数据库文件

## sqliteStmtObject 成员列表 <a id="sqliteStmtObject" href="#sqliteStmtObject">&#x23;</a>

### sqliteStmtObject.bind.blob() <a id="sqliteStmtObject.bind.blob" href="#sqliteStmtObject.bind.blob">&#x23;</a>
[返回对象:sqliteStmtObject](#sqliteStmtObject)

### sqliteStmtObject.bind.blob(二进制字符串) <a id="sqliteStmtObject.bind.blob" href="#sqliteStmtObject.bind.blob">&#x23;</a>
绑定一个参数,参数在SQL 语句中用问号表示  
可使用第二个参数指定问号的位置  
返回命令对象自身

### sqliteStmtObject.bind.boolean() <a id="sqliteStmtObject.bind.boolean" href="#sqliteStmtObject.bind.boolean">&#x23;</a>
将bool值转换为数值存储  
false存为0,true存为1;

### sqliteStmtObject.bind.buffer() <a id="sqliteStmtObject.bind.buffer" href="#sqliteStmtObject.bind.buffer">&#x23;</a>
将buffer类型转换为blob类型存储

### sqliteStmtObject.bind.cdata() <a id="sqliteStmtObject.bind.cdata" href="#sqliteStmtObject.bind.cdata">&#x23;</a>
将cdata类型转换为blob类型存储

### sqliteStmtObject.bind.clear() <a id="sqliteStmtObject.bind.clear" href="#sqliteStmtObject.bind.clear">&#x23;</a>
清除所有绑定值  
成功返回0

### sqliteStmtObject.bind.double() <a id="sqliteStmtObject.bind.double" href="#sqliteStmtObject.bind.double">&#x23;</a>
[返回对象:sqliteStmtObject](#sqliteStmtObject)

### sqliteStmtObject.bind.double(浮点数值) <a id="sqliteStmtObject.bind.double" href="#sqliteStmtObject.bind.double">&#x23;</a>
绑定一个参数,参数在SQL 语句中用问号表示  
可使用第二个参数指定问号的位置  
返回命令对象自身

### sqliteStmtObject.bind.int() <a id="sqliteStmtObject.bind.int" href="#sqliteStmtObject.bind.int">&#x23;</a>
[返回对象:sqliteStmtObject](#sqliteStmtObject)

### sqliteStmtObject.bind.int(数值) <a id="sqliteStmtObject.bind.int" href="#sqliteStmtObject.bind.int">&#x23;</a>
绑定一个参数,参数在SQL 语句中用问号表示  
可使用第二个参数指定问号的位置  
返回命令对象自身

### sqliteStmtObject.bind.long64() <a id="sqliteStmtObject.bind.long64" href="#sqliteStmtObject.bind.long64">&#x23;</a>
[返回对象:sqliteStmtObject](#sqliteStmtObject)

### sqliteStmtObject.bind.long64(数值) <a id="sqliteStmtObject.bind.long64" href="#sqliteStmtObject.bind.long64">&#x23;</a>
绑定一个64位参数,  
支持整数值或math.size64对象,参数在SQL 语句中用问号表示  
可使用第二个参数指定问号的位置  
返回命令对象自身

### sqliteStmtObject.bind.null() <a id="sqliteStmtObject.bind.null" href="#sqliteStmtObject.bind.null">&#x23;</a>
绑定一个空值参数,参数在SQL 语句中用问号表示  
可使用第二个参数指定问号的位置  
返回命令对象自身  

[返回对象:sqliteStmtObject](#sqliteStmtObject)

### sqliteStmtObject.bind.number() <a id="sqliteStmtObject.bind.number" href="#sqliteStmtObject.bind.number">&#x23;</a>
如果是整数则调用bind.int()  
是浮点数则调用bind.double;

### sqliteStmtObject.bind.parameter <a id="sqliteStmtObject.bind.parameter" href="#sqliteStmtObject.bind.parameter">&#x23;</a>
绑定一个动态类型SQL命令参数

### sqliteStmtObject.bind.parameter(参数值,参数索引) <a id="sqliteStmtObject.bind.parameter" href="#sqliteStmtObject.bind.parameter">&#x23;</a>
绑定一个命令动态类型SQL命令参数,自动绑定合适的数据类型.  
参数2指定索引位置,默认为1  
返回命令对象自身

### sqliteStmtObject.bind.parameterAtNames() <a id="sqliteStmtObject.bind.parameterAtNames" href="#sqliteStmtObject.bind.parameterAtNames">&#x23;</a>
[返回对象:sqliteStmtObject](#sqliteStmtObject)

### sqliteStmtObject.bind.parameterAtNames(参数表) <a id="sqliteStmtObject.bind.parameterAtNames" href="#sqliteStmtObject.bind.parameterAtNames">&#x23;</a>
绑定一个表中所有键值对到相应的命名参数,  
对所有键名添加"@"字符作为SQL参数名,  
返回命令对象自身,以及成功绑定的参数数目.

### sqliteStmtObject.bind.parameterByName() <a id="sqliteStmtObject.bind.parameterByName" href="#sqliteStmtObject.bind.parameterByName">&#x23;</a>
[返回对象:sqliteStmtObject](#sqliteStmtObject)

### sqliteStmtObject.bind.parameterByName(参数值,"@参数名") <a id="sqliteStmtObject.bind.parameterByName" href="#sqliteStmtObject.bind.parameterByName">&#x23;</a>
绑定一个命令动态类型SQL命令参数,自动绑定合适的数据类型.  
参数2指定命名参数,参数名可以'@',':','$'等符号作为首字符

### sqliteStmtObject.bind.parameterByNames() <a id="sqliteStmtObject.bind.parameterByNames" href="#sqliteStmtObject.bind.parameterByNames">&#x23;</a>
[返回对象:sqliteStmtObject](#sqliteStmtObject)

### sqliteStmtObject.bind.parameterByNames(参数表) <a id="sqliteStmtObject.bind.parameterByNames" href="#sqliteStmtObject.bind.parameterByNames">&#x23;</a>
绑定一个表中所有键值对到相应的命名参数,  
可使用第二个参数指定'@',':','$'等符号作为参数名前缀,  
返回命令对象自身,以及成功绑定的参数数目.

### sqliteStmtObject.bind.parameterIndex("@参数名") <a id="sqliteStmtObject.bind.parameterIndex" href="#sqliteStmtObject.bind.parameterIndex">&#x23;</a>
返回命名参数的索引值,参数名可以'@',':','$'等符号作为首字符,  
成功返回索引,如果在SQL 语句中未找到该名字则返回0

### sqliteStmtObject.bind.parameterIndex() <a id="sqliteStmtObject.bind.parameterIndex" href="#sqliteStmtObject.bind.parameterIndex">&#x23;</a>
[返回对象:sqliteStmtObject](#sqliteStmtObject)

### sqliteStmtObject.bind.parameters <a id="sqliteStmtObject.bind.parameters" href="#sqliteStmtObject.bind.parameters">&#x23;</a>
绑定多个动态类型SQL命令参数

### sqliteStmtObject.bind.parameters() <a id="sqliteStmtObject.bind.parameters" href="#sqliteStmtObject.bind.parameters">&#x23;</a>
[返回对象:sqliteStmtObject](#sqliteStmtObject)

### sqliteStmtObject.bind.parameters(任意多个命令参数) <a id="sqliteStmtObject.bind.parameters" href="#sqliteStmtObject.bind.parameters">&#x23;</a>
可以用一个数组参数或多个参数指定 SQL 命令参数,  
绑定参数时将自动选择合适的数据类型,  
参数位置对应SQL 语句中的问号位置  
返回命令对象自身

### sqliteStmtObject.bind.string() <a id="sqliteStmtObject.bind.string" href="#sqliteStmtObject.bind.string">&#x23;</a>
存为text类型（UTF8字符串）

### sqliteStmtObject.bind.table(table对象) <a id="sqliteStmtObject.bind.table" href="#sqliteStmtObject.bind.table">&#x23;</a>
如果定义了 _tostring 元方法,则调用 tostring 并转换为文本存储。  
如果是一个时间对象,则使用标准格式转换为文本存储。  
如果表是结构体（未定义 _tostring 元方法）则直接转为 buffer 存储。  
其他普通表以二进制模式序列化为 blob 类型存储（读取时可自动还原为表对象）

### sqliteStmtObject.bind.text() <a id="sqliteStmtObject.bind.text" href="#sqliteStmtObject.bind.text">&#x23;</a>
[返回对象:sqliteStmtObject](#sqliteStmtObject)

### sqliteStmtObject.bind.text(普通文本) <a id="sqliteStmtObject.bind.text" href="#sqliteStmtObject.bind.text">&#x23;</a>
绑定一个参数,参数为普通文本  
转换为UTF8存入数据库

### sqliteStmtObject.bind.text16() <a id="sqliteStmtObject.bind.text16" href="#sqliteStmtObject.bind.text16">&#x23;</a>
[返回对象:sqliteStmtObject](#sqliteStmtObject)

### sqliteStmtObject.bind.text16(UTF16编码文本) <a id="sqliteStmtObject.bind.text16" href="#sqliteStmtObject.bind.text16">&#x23;</a>
绑定一个参数,参数为 UTF16 文本

### sqliteStmtObject.bind.utf16() <a id="sqliteStmtObject.bind.utf16" href="#sqliteStmtObject.bind.utf16">&#x23;</a>
[返回对象:sqliteStmtObject](#sqliteStmtObject)

### sqliteStmtObject.bind.utf16(UTF16编码文本) <a id="sqliteStmtObject.bind.utf16" href="#sqliteStmtObject.bind.utf16">&#x23;</a>
绑定一个参数,参数为UTF16文本

### sqliteStmtObject.bind.utf8() <a id="sqliteStmtObject.bind.utf8" href="#sqliteStmtObject.bind.utf8">&#x23;</a>
[返回对象:sqliteStmtObject](#sqliteStmtObject)

### sqliteStmtObject.bind.utf8(UTF8编码文本) <a id="sqliteStmtObject.bind.utf8" href="#sqliteStmtObject.bind.utf8">&#x23;</a>
绑定一个参数,参数为UTF8文本  
该函数不会转换编码

### sqliteStmtObject.column.count() <a id="sqliteStmtObject.column.count" href="#sqliteStmtObject.column.count">&#x23;</a>
返回列数目

### sqliteStmtObject.column.name(iCol) <a id="sqliteStmtObject.column.name" href="#sqliteStmtObject.column.name">&#x23;</a>
返回指定列名字

### sqliteStmtObject.column.queryValue(iCol) <a id="sqliteStmtObject.column.queryValue" href="#sqliteStmtObject.column.queryValue">&#x23;</a>
返回指定列的数据值  
此函数自动识别并转换类型

### sqliteStmtObject.column.type(iCol) <a id="sqliteStmtObject.column.type" href="#sqliteStmtObject.column.type">&#x23;</a>
返回指定列字段类型

### sqliteStmtObject.each <a id="sqliteStmtObject.each" href="#sqliteStmtObject.each">&#x23;</a>

```aardio
for 字段名,字段名2 in sqliteStmtObject.each() {
	io.print( 字段名,字段名2 )
}
```

### sqliteStmtObject.finalize() <a id="sqliteStmtObject.finalize" href="#sqliteStmtObject.finalize">&#x23;</a>
释放预处理命令对象,  
应当在不再使用此命令对象时尽早调用此函数。  
如果忘记调用，回收对象时也会自动调用此函数

### sqliteStmtObject.getColumns() <a id="sqliteStmtObject.getColumns" href="#sqliteStmtObject.getColumns">&#x23;</a>
返回当前查询的列名字数组.

### sqliteStmtObject.getTable() <a id="sqliteStmtObject.getTable" href="#sqliteStmtObject.getTable">&#x23;</a>
返回全部数据,  
返回值为table数组,每行记录为一个数组元素.

### sqliteStmtObject.prepare("SELECT * FROM [表名] /*SQL 语句*/") <a id="sqliteStmtObject.prepare" href="#sqliteStmtObject.prepare">&#x23;</a>
重新编译SQL预处理命令,  
可选参数2:指定查询条件(table对象或字符串),  
可选增加任意个附加sql参数.

### sqliteStmtObject.prepare() <a id="sqliteStmtObject.prepare" href="#sqliteStmtObject.prepare">&#x23;</a>
[返回对象:sqliteStmtObject](#sqliteStmtObject)

### sqliteStmtObject.reset() <a id="sqliteStmtObject.reset" href="#sqliteStmtObject.reset">&#x23;</a>
重置到没有执行之前的状态,已绑定的参数不会变化  
执行后需要改变绑定参数时必须首先调用该函数

### sqliteStmtObject.sql <a id="sqliteStmtObject.sql" href="#sqliteStmtObject.sql">&#x23;</a>
SQL 指令

### sqliteStmtObject.step(可选输入命名参数) <a id="sqliteStmtObject.step" href="#sqliteStmtObject.step">&#x23;</a>
执行SQL命令并向下移动一行,成功则返回值大于等于100,  
如果提供命令参数表,则自动调用 reset 函数后并自动绑定参数,  
参数表可以包含名值对,也可以包含匿名参数值数组

### sqliteStmtObject.stepQuery() <a id="sqliteStmtObject.stepQuery" href="#sqliteStmtObject.stepQuery">&#x23;</a>
向后移动一行,并返回当前数据,失败返回null,状态码.  
返回table对象,键为列名,值为当前行数据

### sqliteStmtObject.stepResult() <a id="sqliteStmtObject.stepResult" href="#sqliteStmtObject.stepResult">&#x23;</a>
向后移动一行,并返回当前数据,失败返回null,状态码.  
返回数组,键为列序号,值为当前行数据

### 自动完成常量
_SQLITE_OPEN_AUTOPROXY=0x20  
_SQLITE_OPEN_CREATE=4  
_SQLITE_OPEN_DELETEONCLOSE=8  
_SQLITE_OPEN_EXCLUSIVE=0x10  
_SQLITE_OPEN_FULLMUTEX=0x10000  
_SQLITE_OPEN_MAIN_DB=0x100  
_SQLITE_OPEN_MAIN_JOURNAL=0x800  
_SQLITE_OPEN_MASTER_JOURNAL=0x4000  
_SQLITE_OPEN_NOMUTEX=0x8000  
_SQLITE_OPEN_PRIVATECACHE=0x40000  
_SQLITE_OPEN_READONLY=1  
_SQLITE_OPEN_READWRITE=2  
_SQLITE_OPEN_SHAREDCACHE=0x20000  
_SQLITE_OPEN_SUBJOURNAL=0x2000  
_SQLITE_OPEN_TEMP_DB=0x200  
_SQLITE_OPEN_TEMP_JOURNAL=0x1000  
_SQLITE_OPEN_TRANSIENT_DB=0x400  
