DCloud_App_Array
DCloud_App_Array
  • 发布:2019-03-23 20:48
  • 更新:2023-12-20 16:47
  • 阅读:13862

SQLite云端打包配置说明

分类:HTML5+

HBuilderX 1.7.2及以上版本支持SQLite操作db文件。

概述

SQLite是一种嵌入式数据库,本质上就是一个数据库文件(.db)。是无服务器的、零配置的、事务性的简单轻量级SQL数据库引擎。
通常在移动设备上适合不需要高并发量的本地数据存储。

SQLite API使用

plus.sqlite已经封装好操作db数据库文件接口,按以下方法调用即可。
在uni-app中可使用条件编译直接调用5+ Push接口

打开数据库

使用前需调用plus.sqlite.openDatabase打开数据库,必须指定数据库文件路径(.db)和数据库名称。
数据库文件路径使用需注意以下问题:

应用资源目录中的文件只可读,在使用相对路径(如"./x.db")或5+API路径RelativeURL的应用资源目录(如"_www/x.db")时不能写入保存数据。通常可以将一些应用的初始数据作为资源内置到应用中,在业务逻辑中进行读取操作。
如果需要在应用的业务逻辑产生的数据保存,应该将数据库文件保存在可写目录中,推荐使用5+API路径的应用私有文档目录(如"_doc/x.db"),此目录中的文件是可读可写,并且应用热更新时不会影响此目录中的文件。
数据库文件路径只可读时,如果文件不存在打开数据库则会失败;数据库文件路径可读可写时,如果文件不存在则自动创建数据库文件。

注意:Android平台目前已知数据库文件不存在时不会自动创建(此问题会在HBuilderX1.8.1版本修复),临时解决方法是先创建不存在的文件,示例如下:

document.addEventListener('plusready', function(e){  
    // 确保_doc/test.db文件存在  
    plus.io.requestFileSystem( plus.io.PRIVATE_DOC, function(fs){  
        fs.root.getFile('test.db', {create:true}, function(fileEntry){  
            console.log('ensure test.db file!');  
        });  
    });  
}, false);  

// 打开数据库  
function openDB(){  
    outSet('打开数据库: ');  
    plus.sqlite.openDatabase({  
        name: 'first',  
        path: '_doc/test.db',  
        success: function(e){  
            console.log(JSON.stringify(e));  
        },  
        fail: function(e){  
            console.log(JSON.stringify(e));  
        }  
    });  
}

操作数据库

  • 执行SQL语句(plus.sqlite.executeSql),对数据进行增、删、改操作。数据库文件路径必须可读可写,否则会操作失败。
  • 执行事务(plus.sqlite.transaction),对数据库执行事务操作。数据库文件路径必须可读可写,否则会操作失败。
  • 执行查询SQL语句(plus.sqlite.selectSql),对数据库执行查询操作。数据库文件路径可读即可。

关闭数据库

数据库操作完成后,必须调用plus.sqlite.closeDatabase关闭,否则一直占用系统资源。推荐操作前打开数据库,完成操作后及时关闭数据库,避免引起占用系统资源而无法执行其它操作。

完整5+ API接口参考SQLite规范文档

云端打包配置

使用SQLite功能,提交云端打包时需在manifest.json中配置使用“SQLite(数据库)”。

  • HBuilderX1.8.0及以后版本通过可视化界面配置
    打开应用的manifest.json文件,选择“模块权限配置”项,勾选“SQLite数据库”,如下图所示:
    配置SQLite

  • HBuilderX1.7.2&1.7.3版本通过源码视图配置
    打开应用manifest.json文件,点击“源码视图”,在"permissions"节点下添加"SQLite"节点:

    //...  
    "permissions" : {  
        //...  
        "SQLite" : {}  
    },  
    //...

    uni-app应用在"app-plus"->"modules"节点下添加"SQLite"数据

4 关注 分享
2***@qq.com 弃医从文 剑心无间 7***@qq.com

要回复文章请先登录注册

9***@qq.com

9***@qq.com

我初始化了一个db文件 去覆盖opendatabase时自动在_doc目录下生成的文件,在hbuilder调试时能正常访问到www目录下static的db文件,打包之后访问提示文件不存在。文件是放在static/res/uni_name.db,这个路径下打包后的apk解压之后也能找到这个db文件,就是getFile('_www/static/res/uni_name.db', 提示文件不存在,请问这个路径应该怎么写,下面是部分代码
plus.io.requestFileSystem(plus.io.PRIVATE_WWW, function(fobject) {
// fs.root是根目录操作对象DirectoryEntry
fobject.root.getFile('_www/static/res/uni_name.db', {
create: false
}, function(fileEntry) {
2020-06-22 15:33
喜欢技术的前端

喜欢技术的前端

回复 DCloud_App_Array :
好的谢谢
2020-03-23 11:21
DCloud_App_Array

DCloud_App_Array (作者)

回复 喜欢技术的前端 :
将对象转成字符串再保存
2020-03-23 11:08
喜欢技术的前端

喜欢技术的前端

请教一下,sqlite字段怎么存对象呢,谢谢
2020-03-23 10:41
l***@126.com

l***@126.com

回复 DCloud_App_Array :
appId为 __UNI__11D28C7
我用Android Studio 看了下云打包生成apk解压后 的目录结构 路径为 assert/apps/__UNI__11D28C7/www/static/local.db 即云打包生成的apk文件中 肯定有 local.db 文件
我的问题在于 安装完apk后 去到安装目录下 Android\data\uni.UNI11D28C7\apps\__UNI__11D28C7\doc
只有一个 doc文件夹 和一个 temp文件夹 没有www文件夹
而开发环境下 该app 有 www文件夹 Android\data\io.dcloud.HBuilder\apps\HBuilder\www
所以我的问题在于 安装云打包生成的apk文件后 www文件夹去哪了 我得去该文件夹下的 static 里复制一个 db文件出来 放到 doc目录下 如何才能找到 www文件夹
2019-12-18 14:24
DCloud_App_Array

DCloud_App_Array (作者)

回复 l***@126.com :
解压apk查看下应用中是否有db文件?在assets\apps\%APPID%\www\目录下,如果没有则说明打包时没有包含,注意uni-app应该放到static目录。
是云端打包吗?把appid(mmanifest.json的id字段值)发出来
2019-12-13 17:59
l***@126.com

l***@126.com

回复 DCloud_App_Array :
打包成apk文件 安装后,没有www文件夹,应该从哪里拷贝到doc目录下
2019-12-13 13:37
DCloud_App_Array

DCloud_App_Array (作者)

回复 码农1979 :
作为应用的资源放到www文件中,如果需要修改 可以第一次运行时拷贝到其它可写目录。
2019-10-21 18:11
码农1979

码农1979

本地SqliteDB数据库文件如何打包到app中,查了所有的资料都没有介绍的
2019-10-21 09:09
DCloud_App_Array

DCloud_App_Array (作者)

回复 6***@qq.com :
请提供重现问题的应用(ipa或apk)
2019-06-12 18:53