看我这这篇回复就够了
已经完美解决了! 首先要明白一点uniapp读取sqlite文件如果不存在他会自动写入一个空数据库,你当然找不到你的表。
下面一步一步教你如何用Navicat Premium 16创建一个本地sqlite数据库再用uniapp打包android应用在手机模拟器上
(已经创建好表的直接跳到4)
- 打开 Navicat Premium 16 创建sqlite链接。
2.随便创建一个数据库再建一个表。
3.随便写一点数据
4.将数据库文件复制到项目路径的static目录下面(重点: 打包出来的文件路径是在_www下面而不是_doc,如果在_doc下面读取系统会自动给你写一个空数据库,数据库存在表肯定不存在啊,这里把我坑了几个小时。)
5.最好把原来打包的基座app删了,重新安装一下,打包完成利用模拟器自带的文件工具去看下安装好模拟器文件夹内数据库文件大小和你的创建的数据库大小是否一致!(重要,重要,重要,重要,重要,重要,重要,重要,重要)一般不是那个12kb就是对的。
6.文件存在,ok,回到模拟器和Hbuilderx编辑器。
使用连接数据库和查询的方法
/* 打开数据库 */
function handleOpenSQL() {
plus.sqlite.openDatabase({
name: 'abc',/* 这里是链接名称而不是数据库名称 随便填,在使用数据库的时候要用到 */
path: '_www/static/suibian.db',
success(e) {
console.log(e);
},
fail(err) {
console.log(err);
}
});
}
/* 查询表 */
function handleSelectSQL() {
plus.sqlite.selectSql({
name: 'abc',/* 这里是链接名称而不是数据库名称 随便填,在使用数据库的时候要用到 */
sql: `select * FROM \"test\"`,/* 查询表名最好加引号 */
success(e) {
console.log(e);
},
fail(e) {
console.log(e);
}
})
}
- 查看控制台打印的结果,分别调用打开数据库和查询表的方法
连接数据库成功会返回一个空对象。而执行查询表的时候也能正常查询到了!
如果还是没有找到表可以试试下面的sql语句,只需把查询替换成如下
select * FROM sqlite_master where type='table'
/* 查询所有表名称 */
function handleSelectSQL() {
plus.sqlite.selectSql({
name: 'abc',/* 这里是链接名称而不是数据库名称 随便填,在使用数据库的时候要用到 */
sql: `select * FROM sqlite_master where type='table'`,
success(e) {
console.log(e);
},
fail(e) {
console.log(e);
}
})
}
8.可以看到表名被打印出来了。