SqlLite 功能太过于简单了,只有最基本的功能,使用的时候需要重新封装。
由于数据库用完就必须关闭,否则下一次根本打不开,但是会出现一个蛋疼的情况,多个地方处理数据库的时候,前面的还没关闭,后面的就准备打开,就会提示 "Same Name Already Open" 的错误,然后就没法执行下去了,如果是同一个功能还好说,前面执行成功后在执行下一个,就不会出现问题。
但是有时候不得不分开做,就会出现前面的还没关闭,后面的就要打开,如果有办法获取数据库打开状态,那么这个问题就好处理了,做个判断就搞定,但是在网上找了好久,都没发现有办法判断数据库打开状态,官方能不能办法做一个接口?

追梦随想
- 发布:2019-04-05 22:53
- 更新:2019-04-10 15:22
- 阅读:2523
4 个回复
1***@qq.com - wqertr
是啊 打算使用indexedDB基于对象的存储 uni好像不支持,如果使用setStorage, 频繁的全部取出处理再全部写入感觉效率低。用这个吧,重复打开数据库报错不说,也没有看到建表的语法,还有自增主键不知道怎么弄,
1***@qq.com - wqertr
是啊 打算使用indexedDB基于对象的存储 uni好像不支持,如果使用setStorage, 频繁的全部取出处理再全部写入感觉效率低。用这个吧,重复打开数据库报错不说,也没有看到建表的语法,还有自增主键不知道怎么弄,
追梦随想 (作者)
建表的语法跟MySql一样,挺简单,唯独频繁打开关闭数据库比较鸡肋,而且还没办法判断是否打开了。本地存储小数据还可以,大数据只能用数据库来
2019-04-06 19:17
DCloud_App_Array
我们会尽快补充此接口。
MonikaChen
plus.sqlite.isOpenDatabase,你说的是这个吧
2021-02-05 21:49
前海万联 - !WanlShop
自从看了你这个,不会了,是我思路有问题???? 本来在项目公共又封装了下, 开启数据库 通过其他储存字段 为1 关闭为0 增删改查查询判断状态
追梦随想 (作者)
单页面操作很好做,如果是多页面同时操作数据库呢?你告诉我要不要关闭数据库这一步?如果关闭了,js执行速度很快的,就会造成其他页面没法操作了。
2019-04-10 15:28
前海万联
回复 追梦随想: 我懂了,是跟我当前项目完全没关系, 完全不用记录状态
2019-04-10 15:36
1***@163.com
回复 追梦随想:在一个js中封装了对数据库的操作,但是在多个页面调用增删改查,android部分动不动就code":-1404,"message":"android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5): , while compiling: PRAGMA journal_mode,,永远打不开了,你是怎么在不同的界面调用的。。
2019-05-23 14:44
追梦随想 (作者)
回复 1***@163.com: 简单啊,不关闭就行了,哈哈哈,我就是这么做的,打开app就打开数据库,不再关闭,你这个提示好像是数据库的进程被锁定,一次只允许一个地方操作数据库
2019-05-23 15:02
1***@163.com
回复 追梦随想: 哦哦。谢谢回复,不同表插入较多条数据,用到了事务,不然会影响效率,那怎么确保一次只一个地方呢,我这边不关闭ios报问题,关闭android这一块特备容易锁死,,
2019-05-23 15:14
追梦随想 (作者)
回复 1***@163.com: 有事务操作就会锁定进程,那就用先后顺序执行吧,A页面执行完毕用evalJS调用B页面对应的执行函数
2019-05-23 15:19
1***@163.com
回复 追梦随想: 谢谢,可能需求一样,我再想想其他方法。。
2019-05-23 15:26