欢迎到专业群( uni-app x技术交流群 ) 咨询,群中有相关专业的管理员和群友。
uni-app x 可以使用 sqlite,但官方没有内置 sqlite api,也不能使用旧 uni-app 的 plus.sqlite。
你搜索到的 import DB from "@/api/sqlite" 报错,是因为这是旧 uni-app 的写法。uni-app x 不再支持 plus 和 weex api,不能直接沿用 plus.sqlite 相关代码。
在 uni-app x 中使用 sqlite 有两种方式:
- 使用插件市场的 sqlite 插件
官方人员明确回复过:uni-app x 官方未封装 sqlite,可以使用插件市场插件。参考:uniappx可以使用sqlite么?
插件市场已有多个 uni-app x sqlite 插件,例如:
使用方式:
- 打开 插件市场
- 搜索 sqlite,并勾选 uni-app x 筛选条件
- 选择支持你目标平台的插件
- 下载并导入项目,插件会放在
uni_modules 目录下
- 按照插件文档调用
例如第一个插件的调用方式是:
const sqliteContext = uni.createSQLiteContext({
name: 'test.db'
})
sqliteContext.executeSql({
sql: 'insert into test values(1, "test")',
success: function(res) {
console.log(res)
},
fail: function(err) {
console.log(err)
}
})
sqliteContext.selectSql({
sql: 'select * from test',
success: function(res) {
console.log(res)
},
fail: function(err) {
console.log(err)
}
})
本助手使用国产模型,生成代码准确率较低。强烈建议使用uni-agent生成代码
- 自己封装 uts 插件
如果插件市场的插件不满足需求,可以自己写 uts 插件,通过平台原生 api 操作 sqlite:
- android:调用 android 系统的
SQLiteDatabase api
- ios:调用 ios 的 sqlite3 或相关原生能力
- 鸿蒙:调用鸿蒙的关系型数据库 api
uts 插件开发参考:
需要注意的是,uts 是强类型语言,不能直接照搬 js 写法。例如 android 平台调用 query 时,参数类型必须严格匹配,不能直接把 UTSArray 赋值给 Array<String>,需要做类型转换。
另外,如果只是简单的键值对存储,不需要 sql 查询,可以直接使用 uni.setStorageSync 和 uni.getStorageSync,android 端底层本身就是基于 sqlite 实现的。但如果需要复杂查询、事务、关联查询等能力,还是需要使用 sqlite 插件。
总结:你的项目需要先在插件市场下载适配 uni-app x 的 sqlite 插件,或者自己封装 uts 插件,不能使用旧 uni-app 的 plus.sqlite 方式。
1 个回复
Ask小助手 - Ask社区AI助手
uni-app x 可以使用 sqlite,但官方没有内置 sqlite api,也不能使用旧 uni-app 的
plus.sqlite。你搜索到的
import DB from "@/api/sqlite"报错,是因为这是旧 uni-app 的写法。uni-app x 不再支持plus和weexapi,不能直接沿用plus.sqlite相关代码。在 uni-app x 中使用 sqlite 有两种方式:
官方人员明确回复过:uni-app x 官方未封装 sqlite,可以使用插件市场插件。参考:uniappx可以使用sqlite么?
插件市场已有多个 uni-app x sqlite 插件,例如:
使用方式:
uni_modules目录下例如第一个插件的调用方式是:
如果插件市场的插件不满足需求,可以自己写 uts 插件,通过平台原生 api 操作 sqlite:
SQLiteDatabaseapiuts 插件开发参考:
需要注意的是,uts 是强类型语言,不能直接照搬 js 写法。例如 android 平台调用
query时,参数类型必须严格匹配,不能直接把UTSArray赋值给Array<String>,需要做类型转换。另外,如果只是简单的键值对存储,不需要 sql 查询,可以直接使用
uni.setStorageSync和uni.getStorageSync,android 端底层本身就是基于 sqlite 实现的。但如果需要复杂查询、事务、关联查询等能力,还是需要使用 sqlite 插件。总结:你的项目需要先在插件市场下载适配 uni-app x 的 sqlite 插件,或者自己封装 uts 插件,不能使用旧 uni-app 的
plus.sqlite方式。要回复问题请先登录或注册
公告
更多>相关问题