跳到主要内容

zm.SQLiteSelect 查询SQLite3数据

🎯功能

查询SQLite3数据, 支持多种参数格式

📜语法

结果 = zm.SQLiteSelect(数据库路径, 数据表名, 字段[, 条件][, 数量[, 序号]])

📥参数

参数数据类型解释
数据库路径字符串数据库文件所在路径
数据表名字符串要操作的数据表名称
字段字符串可以写单个字段, 例如"*""id", 也可以写多个字段{字段名, ...}, 例如{"id", "name"}
条件字符串可选, 省略为获取所有数据, 字符串可以写"id=1"或者"WHERE id=1", 多字段并且条件{"id":1, ...}, 多条件或关系{{"id":1, "name":"a"}, ...}, 多条件IN关系{"id":{1,10}, "age":{10,20}}
数量数值型可选, 返回多少条数据, 省略为-1表示全部数据
序号数值型可选, 从第几条开始获取, 省略默认为0, 表示从第1条开始获取, 填写本参数必须要有数量参数

📤返回

,成功返回键值对表, 格式为{{"字段名":字段值}, ...}, 没有数据或失败返回nil

💡示例

Import "zm.luae" //导入插件,只需执行一次
zm.Init //初始化插件,只需执行一次

Dim DBpath = "/sdcard/Pictures/zimao.db"
dim tbl = "student"
Dim ret

//执行SQL: SELECT * FROM student;
ret = zm.SQLiteSelect(DBpath, tbl, "*")
If ret Then
For i = 1 to Ubound(ret)+1
TracePrint ret[i]["id"], ret[i]["name"]
Next
End If

//执行SQL: SELECT * FROM student ORDER BY rowid LIMIT 1;
ret = zm.SQLiteSelect(DBpath, tbl, "*", 1)
If ret Then
TracePrint ret[1]["id"], ret[1]["name"]
End If

//执行SQL: SELECT * FROM student ORDER BY rowid LIMIT 1 OFFSET 2;
ret = zm.SQLiteSelect(DBpath, tbl, "*", 1, 2)
If ret Then
TracePrint ret[1]["id"], ret[1]["name"]
End If

//执行SQL: SELECT name FROM student;
ret = zm.SQLiteSelect(DBpath, tbl, "name")
If ret Then
For Each v In ret
TracePrint v["name"]
Next
End If

//执行SQL: SELECT id,name FROM student;
ret = zm.SQLiteSelect(DBpath, tbl, {"id", "name"})
If ret Then
For Each k, v In ret
TracePrint "第" & i & "个数据: ", v["id"], v["name"]
Next
End If

//执行SQL: SELECT name FROM student WHERE id=1;
ret = zm.SQLiteSelect(DBpath, tbl, "name", "id=1") //id=1等同于"WHERE id=1"
If ret Then
TracePrint ret[1]["name"]
End If

//执行SQL: SELECT name FROM student WHERE id=1 AND age=10;
ret = zm.SQLiteSelect(DBpath, tbl, "name", {"id":1, "age":10})
If ret Then
TracePrint ret[1]["name"]
End If

//执行SQL: SELECT name FROM student WHERE (id=2 AND age=20) OR (id=3 AND age=30);
ret = zm.SQLiteSelect(DBpath, tbl, "name", {{"id":2, "age":20}, {"id":3, "age":30}})
If ret Then
For Each k, v In ret
TracePrint "第" & i & "个数据: ", v["name"]
Next
End If

//执行SQL: SELECT name FROM student WHERE id IN (3,4) AND age IN (30,40);
ret = zm.SQLiteSelect(DBpath, tbl, "name", {"id":{3,4}, "age":{30,40}})
If ret Then
For Each k, v In ret
TracePrint "第" & i & "个数据: ", v["name"]
Next
End If

📘备注

  • V4.2514: 加入命令