aardio 文档

sqlite.base 库模块帮助文档

sqlite 成员列表

SQLite(嵌入式数据库)支持库
此支持库使用的 SQLite 组件体积较小,但并非最新版。
功能一般够用,但不支持一些 SQLite 新版才有的特性。

如果将 sqlite 导入语句替换为 sqlite.latest 扩展库导入语句,
则会改用新版 SQLite 组件,体积会大一些,但支持的功能更多一些。
其他代码中的 sqlite 不需要替换为 sqlite.latest

如果需要自定义 SQLite 版本,请参考 sqlite.latest 扩展库源码

sqlite(":memory:")

创建内存数据库

sqlite("\数据库路径")

参数一指定数据库路径,支持自动创建数据库文件.
第二个参数(可选参数)指定数据库密钥,sqlite.aes128或sqlite.aes256支持该参数.
第三个参数(可选参数)使用一个或多个_SQLITE_OPEN_前缀常量指定连接选项
默认启用多线程模式,多线程共用单个数据连接不安全,否则就是安全的
多线程模式可并发读,但不可同时写入

sqlite("file:数据库路径)

使用 URI 指定数据库路径与参数。
参数@2 可选用表指定 URI 参数,或用字符串指定密钥。
也可以在参数 @1 的 URI 后面直接写参数。
文档 https://www.sqlite.org/uri.html

sqlite()

返回对象:sqliteConnObject

sqlite.ABORT

4 //回调函数请求中止

sqlite.AUTH

23 //认证禁止

sqlite.BUSY

5 //数据库文件被锁定

sqlite.CANTOPEN

14 //不能打开数据库文件

sqlite.CONSTRAINT

19 //因约束违背而中止

sqlite.CORRUPT

11 //数据库文件变形

sqlite.DONE

101 //sqlite3_step()完成执行,已无数据

sqlite.EMPTY

16 //数据库是空的

sqlite.ERROR

1 //SQL错误或数据库不存在

sqlite.FORMAT

24 //附属数据库格式错误

sqlite.FULL

13 //插入失败因为数据库满

sqlite.INTERNAL

2 //SQLite内部逻辑错误(没有使用)

sqlite.INTERRUPT

9 //操作被sqlie3_interrupt()中止

sqlite.IOERR

10 //磁盘I=O错误

sqlite.LOCKED

6 //数据库中的一表被锁定

sqlite.MISMATCH

20 //数据类型不匹配

sqlite.MISUSE

21 //库使用方法不当

sqlite.NOLFS

22 //主机不支持库中操作系统功能

sqlite.NOMEM

7 //malloc()分配堆失败

sqlite.NOTADB

26 //打开非数据库文件

sqlite.NOTFOUND

12 //表或纪录没有找到(没有使用)

sqlite.OK

0 //成功执行

sqlite.PERM

3 //访问许可禁止

sqlite.PROTOCOL

15 //数据库锁协议错误

sqlite.RANGE

25 //sqlite3_bind()第2个参数超出范围

sqlite.READONLY

8 //企图写只读数据库

sqlite.ROW

100 //sqlite3_step()有另一行数据就绪

sqlite.SCHEMA

17 //数据库模式改变

sqlite.TOOBIG

18 //单行数据过多(没有使用)

sqlite._dll

返回对象:dllModuleObject

sqlite.aes128

支持AES128位数据加密版本sqlite支持库

sqlite.aes128("\数据库路径")

参数一指定数据库路径,支持自动创建数据库文件.
第二个参数(可选参数)指定数据库密钥,sqlite.aes128或sqlite.aes256支持该参数.

sqlite.aes128()

返回对象:sqliteConnObject

sqlite.aes256

支持AES256位数据加密版本sqlite支持库

sqlite.aes256("\数据库路径")

参数一指定数据库路径,支持自动创建数据库文件.
第二个参数(可选参数)指定数据库密钥,sqlite.aes128或sqlite.aes256支持该参数.

sqlite.aes256()

返回对象:sqliteConnObject

sqlite.assertf(/*调用sqlite API函数*/)

第一个参数是API返回的状态值
如果发生错误则抛出异常终断程序,并显示错误信息

sqlite.busy_handler

dll.api("sqlite3_busy_handler","int(POINTER pDB,pointer handle,pointer)");

sqlite.busy_timeout

dll.api("sqlite3_busy_timeout","int(POINTER pDB,int ms)");

sqlite.changes

dll.api("sqlite3_changes","int(pointer db)");

sqlite.checkResult(failed,err,level)

参数一: sqlite API的第一个返回值
参数二(可选参数):sqlite返回的错误信息指针
参数三(可选参数): 抛出异常的调用级别,2为调用checkResult的函数,3为调用当前函数的函数

sqlite.close

dll.api("sqlite3_close","int(pointer db)");

sqlite.escape()

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

sqlite.escapeId()

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

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

sqlite.exec

dll.api("sqlite3_exec","int(POINTER db,STRING sql,pointer callback,pointer callback_arg,pointer &)");

sqlite.finalize

dll.api("sqlite3_finalize","int(POINTER stmt)");

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

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

dll.api("sqlite3_last_insert_rowid","int(pointer db)");

sqlite.lasterr(db,errcode)

参数1:指定数据库连接句柄,
参数2:可选使用此参数指定错误代码,
返回最后一次发生错误的错误信息,以及错误代码.

sqlite.prepare

dll.api("sqlite3_prepare","int(POINTER db,string szSql,int nByte,pointer &stmt,pointer& pzTail)");

sqlite.prepare2

dll.api("sqlite3_prepare_v2","int(POINTER db,string szSql,int nByte,pointer &stmt,pointer& pzTail)");

sqlite.reset

dll.api("sqlite3_reset","int(POINTER stmt)");

sqlite.step

dll.api("sqlite3_step","int(POINTER stmt)");

sqlite.time(表示时间的字符串或数值)

参数可以是时间数值、时间字符串、或其他datetime对象
返回time对象,默认使用格式化串"%Y-%m-%d %H:%M:%S"

sqlite.version()

返回版本号数值,以及文本值

sqlite.wal_checkpoint

dll.api("sqlite3_wal_checkpoint","int(POINTER pDB,pointer zDb)");

sqlite.bind 成员列表

sqlite.bind. blob

dll.api("sqlite3_bind_blob","int(pointer stmt, int, pointer, int n, pointer )");

sqlite.bind.clear

dll.api("sqlite3_clear_bindings","int(pointer stmt)");

sqlite.bind.double

dll.api("sqlite3_bind_double","int(pointer stmt, int, double)");

sqlite.bind.int

dll.api("sqlite3_bind_int","int(pointer stmt, int, int)");

sqlite.bind.long64

dll.sqlite3_bind_int64;

sqlite.bind.parameter_index

dll.api("sqlite3_bind_parameter_index","int(pointer stmt, string zName)");

sqlite.bind.text

dll.api("sqlite3_bind_text","int(pointer stmt, int, string, int n,pointer )");

sqlite.bind.text16

dll.api("sqlite3_bind_text16","int(pointer stmt, int,ustring, int, pointer )");

sqlite.bind.value

dll.api("sqlite3_bind_value","int(pointer stmt, int, pointer)");

sqlite.bind.zeroblob

dll.api("sqlite3_bind_zeroblob","int(pointer stmt, int, int n)");

sqlite.bind.bind 成员列表

sqlite.bind.bind.null

dll.api("sqlite3_bind_null","int(pointer stmt, int)");

sqlite.column 成员列表

sqlite.column. _blob

dll.api("sqlite3_column_blob","pointer(POINTER stmt, int iCol)");

sqlite.column.blob(stmt,iCol)

读取二进制数据,并返回buffer类型字节数组,
如果存储的是一个序列化后的table对象,则返回table对象.

sqlite.column.bytes

dll.api("sqlite3_column_bytes","int(POINTER stmt, int iCol)");

sqlite.column.bytes16

dll.api("sqlite3_column_bytes16","int(POINTER stmt, int iCol)");

sqlite.column.count

dll.api("sqlite3_column_count","int(POINTER stmt)");

sqlite.column.double

dll.api("sqlite3_column_double","double(POINTER stmt, int iCol)");

sqlite.column.int

dll.api("sqlite3_column_int64","long(POINTER stmt, int iCol)");

sqlite.column.name(stmt,iCol)

返回字段名

sqlite.column.queryValue(iCol)

返回指定列的数据,自动识别数据类型

sqlite.column.text(stmt,iCol)

返回文本,自动由UTF8转换为ANSI

sqlite.column.text16

dll.api("sqlite3_column_text16","pointer(POINTER stmt, int iCol)");

sqlite.column.type(stmt,iCol)

返回类型ID,以及类型名

sqlite.column.typeName[类型ID]

根据类型ID,返回类型名

sqlite.column.value

dll.api("sqlite3_column_value","int(POINTER stmt, int iCol)");

sqlite.formatResult 成员列表

sqlite.formatResult.(failed,err)

参数一: sqlite API的第一个返回值
参数二(可选参数):sqlite返回的错误信息指针
对于原始Sqlite API返回的err指针,必须调用此函数转换为字符串并释放该指针

sqlite.table 成员列表

sqlite.table. get

dll.api("sqlite3_get_table","int(POINTER db,string zSql,pointer &pazResult,int &pnRow,int &pnColumn,pointer &errmsg)");

sqlite.table.free

dll.api("sqlite3_free_table","int(pointer azResult)")

sqliteConnObject 成员列表

sqliteConnObject.beginTrans("EXCLUSIVE")

开始事务
尝试获取EXCLUSIVE锁(保证没有其他连接)

sqliteConnObject.beginTrans("IMMEDIATE")

开始事务
尝试获取RESERVED锁(其他连接可读)

sqliteConnObject.beginTrans()

开始DEFERRED事务
默认不获取任何锁,直到需要锁的时候才获取锁,
开启事务以后,可使用rollbackTrans()函数撤消所有更改,
使用commitTrans()函数提交所有更改.
使用此函数可以避免sqlite为每个操作创建一个默认事务
批量操作数据库时可显著提升sqlite执行效率.

sqliteConnObject.busyHandler

sqliteConnObject.busyHandler(   
    function(strBack,count) {  
        sleep(1);  
        return count < 1000; /*重试次数*/  
    },strBack  
)

sqliteConnObject.busyTimeout(10000)

数据锁定冲突时的重试时间,以毫秒为单位,成功返回true
busyHandler()函数控制重试次数,busyTimeout()函数控制重试时间
这两个函数可相互影响,设置一个必然然取消另一个

sqliteConnObject.changes()

返回数据库最近一次运行exec()所改变的行数

sqliteConnObject.close()

关闭数据库连接
在线程结束时,此函数也会自动调用

sqliteConnObject.commitTrans()

提交事务

sqliteConnObject.config

配置数据库。
仅 sqlite.ciphers 等 sqlite 增强扩展库支持此函数。
用法参考相关扩展库文档。

sqliteConnObject.config(name,value)

配置数据库。
成功返回当前配置值,失败返回 -1。
@name 指定要修改的配置名,也可以指定包含多个配置名值对的表。
@value 指定配置值,不指定值则用返回当前值。

sqliteConnObject.configCipher

配置加密算法参数。
仅 sqlite.ciphers 等 sqlite 增强扩展库支持此函数。
用法参考相关扩展库文档。

sqliteConnObject.configCipher(cipherName,name,value)

配置加密算法参数。
成功返回当前配置值,失败返回 -1。
@cipherName 指定加密算法名称。

sqliteConnObject.db

当前打开的数据库连接对象

sqliteConnObject.each

for 字段名,字段名2 in sqliteConnObject.each("SELECT * from [表名] ORDER BY 排序字段 DESC LIMIT 长度 OFFSET 开始位置") {
    io.print( 字段名,字段名2 )
}

sqliteConnObject.each_sqlite_master

for Type,name,tbl_name,rootpage,sql in sqliteConnObject.each("SELECT * from [sqlite_master]") {
    io.print( Type,name,tbl_name,rootpage,sql )
}

sqliteConnObject.enum(sql,格式化参数...)

sqliteConnObject.enum(sql,格式化参数...enum(   
    /*sql*/,  
    function(tname,tvalue){  
        for(i=1;#tname;1){   
            io.print(tname[i],tvalue[i])  
        }  

    }  
)

sqliteConnObject.exec("字符串参数")

执行SQL 语句,出错则抛出异常,
可选增加一个或多个格式化参数,
格式化规则请参考 sqlite.format 函数说明,
格式化参数可以是一个表参数,用于替换SQL中占位符指定的参数,
SQL语句用@或:前缀标明的命名参数使用表的名值对成员格式化,
SQL语句中的?或??占位符使用参数表的数组成员格式化,??用于标识符或WHERE条件表

sqliteConnObject.exec_create_index

sqliteConnObject.exec("CREATE INDEX 索引名字 ON 表名字(索引字段名字)")  
//建立索引可加快该字段查询速度.

sqliteConnObject.exec_create_table

sqliteConnObject.exec("CREATE TABLE 表名(   
    ID INTEGER PRIMARY KEY AUTOINCREMENT,    
    数值字段名 INTEGER,  
    浮点字段名 REAL,  
    文本字段名 TEXT,  
    二进制字段名 BLOB,   
    非空字段名 NOT NULL DEFAULT '默认值',  
    动态类型字段名,  
    UNIQUE (ID)   
    );"  
)

sqliteConnObject.exec_delete_sequence

sqliteConnObject.exec("DELETE FROM sqlite_sequence WHERE name = '表名'")  
//自增ID置0

sqliteConnObject.exec_delete_table

sqliteConnObject.exec("DELETE FROM 表名 ")  
//清空表

sqliteConnObject.exec_drop_table

sqliteConnObject.exec("DROP table 表名 ")  
//删除表

sqliteConnObject.exec_free_memory

sqliteConnObject.exec("VACUUM")//DELETE表后必须调用此语句才能释放空间

sqliteConnObject.exec_insert

sqliteConnObject.exec("INSERT INTO 表名(字段名) VALUES( 值 )")  
//插入数据到表中

sqliteConnObject.exec_insert_where_not_exists

sqliteConnObject.exec("INSERT INTO 表名(字段名) SELECT '插入值' WHERE NOT EXISTS(SELECT * from 表名 WHERE 条件字段名=查询值);")  
//如果符合条件的数据不存在则插入新的数据

sqliteConnObject.exec_journal_mode_delete

sqliteConnObject.exec("journal_mode=DELETE;")

sqliteConnObject.exec_journal_mode_wal

sqliteConnObject.exec("PRAGMA journal_mode=WAL;")

sqliteConnObject.exec_replace

sqliteConnObject.exec("REPLACE INTO [表名] (字段名, 字段名2) VALUES (值, 值2)")  
//如果该表有一个主键,那么当主键值相等的时候,该行数据不存在执行插入,存在则执行更新操作

sqliteConnObject.exec_update

sqliteConnObject.exec("UPDATE 表名 SET 更新字段 = '更新值' WHERE 条件字段 = 条件值;");

sqliteConnObject.existsTable("字符串参数")

判断指定的表是否存在

sqliteConnObject.getTable("SELECT * FROM [表名] /*SQL 语句*/")

返回包含行记录组成的table数组对象,
每行是由列名、值组成的table表对象。
参数@2为可选参数:

如果SQL内使用@前缀指定了命名参数,则参数@2使用 table 指定参数的值
并且SQL语句中的?或??占位符将使用 sqlite.format 函数格式化为参数@2对应的值,
否则调用sqlite.format格式化??占位符为参数@2指定的值,
如果参数@2不是表,则调用 string.format 使用参数@2开始的所有参数格式化sql

sqliteConnObject.key("字符串参数")

输入并验证数据库密钥
成功返回true,失败返回false,错误信息,错误代码
该函数需要使用支持加密的DLL组件重新编译sqlite库

sqliteConnObject.lastInsertRowid()

获取最后一次插入操作添加记录的ID
作用类似MSSQL的@@IDENTITY

sqliteConnObject.lasterr()

返回最后一次发生错误的错误信息,以及错误代码

sqliteConnObject.prepare("SELECT * FROM [表名] WHERE 字段名=@参数值")

编译SQL预处理命令,
1、如果参数@2为表对象,参数表中的数组成员用于格式化 SQL 语句中的??占位符,
2、否则调用string.format格式化SQL 语句,
查询SQL示例:
"SELECT * FROM [表名] WHERE 条件字段=12 ORDER BY 排序字段 DESC LIMIT 1 OFFSET 0"
上面SQL语句中LIMIT n OFFSET i 指定第i条记录开始取n条记录
也可以直接写为 limit i,n

sqliteConnObject.prepare()

返回对象:sqliteStmtObject

sqliteConnObject.prepare_insert

sqliteConnObject.prepare("INSERT INTO [表名] VALUES (?1,?2,?3,?4);")  
//创建插入数据SQL命令对象,问号表示参数,可在问号后指定索引

sqliteConnObject.prepare_select_distinct

sqliteConnObject.prepare("SELECT DISTINCT 去重字段 FROM [表名]")

sqliteConnObject.rekey("字符串参数")

添加、清空、重设数据库密钥
成功返回true,失败返回false,错误信息,错误代码
该函数需要使用支持加密的DLL组件重新编译sqlite库

sqliteConnObject.rollbackTrans()

回滚事务,取消所有修改

sqliteConnObject.stepQuery("SELECT * FROM [表名] /*SQL 语句*/")

查询并返回首行数据(名值对格式),失败返回null,状态码。
参数@2为可选参数:
如果参数@2是一个指定了SQL 查询参数值的表,
SQL 中@前缀的命名参数将由数据库绑定同名参数值,这并非调用 sqlite.format 格式化,
SQL语句中的?或??占位符将使用参数@2中的数组值调用 sqlite.format 函数格式化,
如果参数@2不是表,则调用 string.format 使用参数@2开始的所有参数格式化sql

sqliteConnObject.stepResult("SELECT * FROM [表名] /*SQL 语句*/")

查询并返回首行数据(数组格式),失败返回null,状态码。
参数@2为可选参数:
如果参数@2是一个指定了SQL 查询参数值的表,
SQL 中@前缀的命名参数将由数据库绑定同名参数值,这并非调用 sqlite.format 格式化,
SQL语句中的?或??占位符将使用参数@2中的数组值调用 sqlite.format 函数格式化,
如果参数@2不是表,则调用 string.format 使用参数@2开始的所有参数格式化sql

sqliteConnObject.walCheckpoint()

执行checkpoint操作时,WAL日志文件内容被写回数据库文件

sqliteStmtObject 成员列表

sqliteStmtObject.bind.blob()

返回对象:sqliteStmtObject

sqliteStmtObject.bind.blob(二进制字符串)

绑定一个参数,参数在SQL 语句中用问号表示
可使用第二个参数指定问号的位置
返回命令对象自身

sqliteStmtObject.bind.boolean()

将bool值转换为数值存储
false存为0,true存为1;

sqliteStmtObject.bind.buffer()

将buffer类型转换为blob类型存储

sqliteStmtObject.bind.cdata()

将cdata类型转换为blob类型存储

sqliteStmtObject.bind.clear()

清除所有绑定值
成功返回0

sqliteStmtObject.bind.double()

返回对象:sqliteStmtObject

sqliteStmtObject.bind.double(浮点数值)

绑定一个参数,参数在SQL 语句中用问号表示
可使用第二个参数指定问号的位置
返回命令对象自身

sqliteStmtObject.bind.int()

返回对象:sqliteStmtObject

sqliteStmtObject.bind.int(数值)

绑定一个参数,参数在SQL 语句中用问号表示
可使用第二个参数指定问号的位置
返回命令对象自身

sqliteStmtObject.bind.long64()

返回对象:sqliteStmtObject

sqliteStmtObject.bind.long64(数值)

绑定一个64位参数,
支持整数值或math.size64对象,参数在SQL 语句中用问号表示
可使用第二个参数指定问号的位置
返回命令对象自身

sqliteStmtObject.bind.null()

绑定一个空值参数,参数在SQL 语句中用问号表示
可使用第二个参数指定问号的位置
返回命令对象自身

返回对象:sqliteStmtObject

sqliteStmtObject.bind.number()

如果是整数则调用bind.int()
是浮点数则调用bind.double;

sqliteStmtObject.bind.parameter

绑定一个动态类型SQL命令参数

sqliteStmtObject.bind.parameter(参数值,参数索引)

绑定一个命令动态类型SQL命令参数,自动绑定合适的数据类型.
参数2指定索引位置,默认为1
返回命令对象自身

sqliteStmtObject.bind.parameterAtNames()

返回对象:sqliteStmtObject

sqliteStmtObject.bind.parameterAtNames(参数表)

绑定一个表中所有键值对到相应的命名参数,
对所有键名添加"@"字符作为SQL参数名,
返回命令对象自身,以及成功绑定的参数数目.

sqliteStmtObject.bind.parameterByName()

返回对象:sqliteStmtObject

sqliteStmtObject.bind.parameterByName(参数值,"@参数名")

绑定一个命令动态类型SQL命令参数,自动绑定合适的数据类型.
参数2指定命名参数,参数名可以'@',':','$'等符号作为首字符

sqliteStmtObject.bind.parameterByNames()

返回对象:sqliteStmtObject

sqliteStmtObject.bind.parameterByNames(参数表)

绑定一个表中所有键值对到相应的命名参数,
可使用第二个参数指定'@',':','$'等符号作为参数名前缀,
返回命令对象自身,以及成功绑定的参数数目.

sqliteStmtObject.bind.parameterIndex("@参数名")

返回命名参数的索引值,参数名可以'@',':','$'等符号作为首字符,
成功返回索引,如果在SQL 语句中未找到该名字则返回0

sqliteStmtObject.bind.parameterIndex()

返回对象:sqliteStmtObject

sqliteStmtObject.bind.parameters

绑定多个动态类型SQL命令参数

sqliteStmtObject.bind.parameters()

返回对象:sqliteStmtObject

sqliteStmtObject.bind.parameters(任意多个命令参数)

可以用一个数组参数或多个参数指定 SQL 命令参数,
绑定参数时将自动选择合适的数据类型,
参数位置对应SQL 语句中的问号位置
返回命令对象自身

sqliteStmtObject.bind.string()

存为text类型(UTF8字符串)

sqliteStmtObject.bind.table(table对象)

如果定义了tostring元方法,则调用并转换为文本存储,
如果是一个时间对象,则使用标准格式转换为文本存储
否则序列化为blob类型存储

sqliteStmtObject.bind.text()

返回对象:sqliteStmtObject

sqliteStmtObject.bind.text(普通文本)

绑定一个参数,参数为普通文本
转换为UTF8存入数据库

sqliteStmtObject.bind.text16()

返回对象:sqliteStmtObject

sqliteStmtObject.bind.text16(UTF16编码文本)

绑定一个参数,参数为UTF16文本

sqliteStmtObject.bind.utf16()

返回对象:sqliteStmtObject

sqliteStmtObject.bind.utf16(UTF16编码文本)

绑定一个参数,参数为UTF16文本

sqliteStmtObject.bind.utf8()

返回对象:sqliteStmtObject

sqliteStmtObject.bind.utf8(UTF8编码文本)

绑定一个参数,参数为UTF8文本
该函数不会转换编码

sqliteStmtObject.column.count()

返回列数目

sqliteStmtObject.column.name(iCol)

返回指定列名字

sqliteStmtObject.column.queryValue(iCol)

返回指定列的数据值
此函数自动识别并转换类型

sqliteStmtObject.column.type(iCol)

返回指定列字段类型

sqliteStmtObject.each

for 字段名,字段名2 in sqliteStmtObject.each() {
    io.print( 字段名,字段名2 )
}

sqliteStmtObject.finalize()

释放预处理命令对象,
应当在不再使用此命令对象时尽早调用此函数。
如果忘记调用,回收对象时也会自动调用此函数

sqliteStmtObject.getColumns()

返回当前查询的列名字数组.

sqliteStmtObject.getTable()

返回全部数据,
返回值为table数组,每行记录为一个数组元素.

sqliteStmtObject.prepare("SELECT * FROM [表名] /*SQL 语句*/")

重新编译SQL预处理命令,
可选参数2:指定查询条件(table对象或字符串),
可选增加任意个附加sql参数.

sqliteStmtObject.prepare()

返回对象:sqliteStmtObject

sqliteStmtObject.reset()

重置到没有执行之前的状态,已绑定的参数不会变化
执行后需要改变绑定参数时必须首先调用该函数

sqliteStmtObject.sql

SQL 指令

sqliteStmtObject.step(可选输入命名参数)

执行SQL命令并向下移动一行,成功则返回值大于等于100,
如果提供命令参数表,则自动调用 reset 函数后并自动绑定参数,
参数表可以包含名值对,也可以包含匿名参数值数组

sqliteStmtObject.stepQuery()

向后移动一行,并返回当前数据,失败返回null,状态码.
返回table对象,键为列名,值为当前行数据

sqliteStmtObject.stepResult()

向后移动一行,并返回当前数据,失败返回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

Markdown 格式