CursorWrapper
CursorWrapper 是 Database.rawQuery(...), Database.query(...) 等查询方法返回的游标包装对象.
源码依据:
app/src/main/java/org/autojs/autojs/runtime/api/SQLite.ktapp/src/main/java/org/autojs/autojs/core/database/Database.java
常见相关方法或属性:
CursorWrapper
CursorWrapper 委托了 Android Cursor 的全部能力, 并额外提供更适合脚本使用的读取方法. 查询返回游标后, 调用方应主动 close(); single() 与默认的 all() 会自动关闭游标.
字段类型映射:
FIELD_TYPE_NULL->nullFIELD_TYPE_INTEGER->LongFIELD_TYPE_FLOAT->DoubleFIELD_TYPE_STRING->StringFIELD_TYPE_BLOB->byte[]
[m] get
get(index)
- index { number } - 列索引
- returns { * }
按列索引读取当前行字段.
[m] getByColumn
getByColumn(column)
- column { string } - 列名
- returns { * }
按列名读取当前行字段. 列不存在时会由 getColumnIndexOrThrow 抛出异常.
[m] pick
pick()
- returns { object }
将当前行转换为对象, 键为列名.
[m] next
next()
- returns { object | null }
移动到下一行并返回对象; 无下一行时返回 null. 此方法不会自动关闭游标.
[m] single
single()
- returns { object | null }
返回第一条记录并关闭游标.
[m] all
all(close?)
从当前位置继续读取全部行. 默认读取后关闭游标; 传入 false 时保留游标打开状态.
示例
js
let cursor = db.rawQuery('SELECT id, name FROM user', []);
let rows = cursor.all(); // 默认关闭 cursor.
let one = db.rawQuery('SELECT id, name FROM user LIMIT 1', []).single();
console.log(one && one.name);