Skip to content

CursorWrapper

CursorWrapper 是 Database.rawQuery(...), Database.query(...) 等查询方法返回的游标包装对象.

源码依据:

  • app/src/main/java/org/autojs/autojs/runtime/api/SQLite.kt
  • app/src/main/java/org/autojs/autojs/core/database/Database.java

常见相关方法或属性:


CursorWrapper


CursorWrapper 委托了 Android Cursor 的全部能力, 并额外提供更适合脚本使用的读取方法. 查询返回游标后, 调用方应主动 close(); single() 与默认的 all() 会自动关闭游标.

字段类型映射:

  • FIELD_TYPE_NULL -> null
  • FIELD_TYPE_INTEGER -> Long
  • FIELD_TYPE_FLOAT -> Double
  • FIELD_TYPE_STRING -> String
  • FIELD_TYPE_BLOB -> byte[]

[m] get

get(index)

  • index { number } - 列索引
  • returns { * }

按列索引读取当前行字段.

[m] getByColumn

getByColumn(column)

  • column { string } - 列名
  • returns { * }

按列名读取当前行字段. 列不存在时会由 getColumnIndexOrThrow 抛出异常.

[m] pick

pick()

将当前行转换为对象, 键为列名.

[m] next

next()

移动到下一行并返回对象; 无下一行时返回 null. 此方法不会自动关闭游标.

[m] single

single()

返回第一条记录并关闭游标.

[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);

AutoJs6 应用文档