uni-app使用Sqlite

step2:封装常用操作(未对事务进行封装 HTML5+ API Reference (html5plus.org))
// //打开数据库
function openDb(name,path) {
return new Promise((resolve,reject)=>{
plus.sqlite.openDatabase({
name: name, //这里是数据库的名称
path: path, //_doc是相对路径的应用私有文档目录
success: function(e){
console.log('数据库打开成功')
resolve(e)
},
fail: function(e){
console.log('数据库打开失败:' + JSON.stringify(e))
reject(e)
}
})
})
} function isOpened(name,path) {
return plus.sqlite.isOpenDatabase({name:name,path:path})
} function closeDb(name) {
return new Promise((resolve,reject)=>{
plus.sqlite.closeDatabase()({
name: name, //这里是数据库的名称
success: function(e){
console.log('数据库打开成功')
resolve(e)
},
fail: function(e){
console.log('数据库打开失败')
reject(e)
}
})
})
} function selectSql(name,sqlText) {
return new Promise((resolve,reject)=>{
plus.sqlite.selectSql({
name: name, //这里是数据库的名称
sql: sqlText,
success: function(e){
console.log('selectSql查询成功:' + sqlText)
resolve(e)
},
fail: function(e){
console.log('selectSql查询失败:' + sqlText + "-异常信息:" + JSON.stringify(e))
reject(e)
}
})
})
} function executeSql(name,sqlText) {
return new Promise((resolve,reject)=>{
plus.sqlite.executeSql({
name: name, //这里是数据库的名称
sql: sqlText,
success: function(e){
console.log('数据库打开成功')
resolve(e)
},
fail: function(e){
console.log('executeSql执行失败:' + sqlText + '-异常信息:' + JSON.stringify(e))
reject(e)
}
})
})
} export {
openDb,
isOpened,
closeDb,
selectSql,
executeSql
}
使用举例:
(1)导入函数
import { isOpened,openDb, closeDb, selectSql,executeSql } from '@/utils/sqliteUtil';
(2)使用举例(注意这个路径-H5+路径规范和app路径相关只是)
onLoad() {
const createTableSql = 'CREATE TABLE Test (TestID INT (100) PRIMARY KEY, TestName VARCHAR (200) )'
const name = 'stock';
const path = '_doc/MyStock.db';
openDb(name, path).then(() => {
const sql = 'select TestID,TestName from Test'
executeSql(name, createTableSql).then(result => {
console.log('executeSql',result)
})
})
},
methods: {
sqlTest() {
const name = 'stock';
const path = '_doc/MyStock.db';
if(isOpened(name,path)){
const insertSql = 'INSERT INTO Test (TestID,TestName) VALUES (2, \'张三\');'
executeSql(name,insertSql).then(result=>{
const sql = 'select TestID,TestName from Test';
selectSql(name, sql).then(result => {
console.log(result);
})
})
} else {
openDb(name, path).then(() => {
const sql = 'select TestID,TestName from Test';
selectSql(name, sql).then(result => {
console.log(result);
});
});
}
}
}
uni-app使用Sqlite的更多相关文章
- uni app中使用自定义图标库
项目中难免会用到自定义图标,那在uni app中应该怎么使用呢? 首先, 将图标目录放在static资源目录下: 在main.js中引入就可以全局使用了 import '@/static/icon-o ...
- uni app 零基础小白到项目实战-1
uni-app是一个使用vue.js开发跨平台应用的前端框架. 开发者通过编写vue.js代码,uni-app将其编译到Ios,android,微信小程序等多个平台,保证其正确并达到优秀体验. Uni ...
- uni app以及小程序 --环境搭建以及编辑器
https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 根据以上网页下载自己电脑相应的版本的微信开发者工具(目录 ...
- uni app canvas 不生效
canvas 创建canvas绘图上下文. <canvas style="width: 300px; height: 200px;" canvas-id="firs ...
- uni app 零基础小白到项目实战2
<template> <scroll-view v-for="(card, index) in list" :key="index"> ...
- uni app 零基础小白到项目实战
$emit 子组件传给父组件 $ref 父组件操作子组件 公用模板 uni-app全局变量的几种实现方法 const websiteUrl = 'http' const now = Date.now ...
- uni app中关于图片的分包加载
因为在项目中使用了大量的静态资源图片,使得主包体积过大, 而把这些图片全部放到服务器又有点麻烦,就想能不能把图片也分包,但是直接放在分包下的话导致图片资源找不到了, 在社区中看到大佬分享的十分有用,特 ...
- 数据火器库八卦系列之瑞士军刀随APP携带的SQLite
来源:云数据库技术 数据库打工仔喃喃自语的八卦历史 1. 为导弹巡洋舰设计,用在手机上的数据库 2. Small and Simple, and Better 3. 如何看出是自己的娃:产品定位,特点 ...
- 5G到来,App的未来,是JavaScript,Flutter还是Native ?
Native App React Native(RN)发布于2015年,也是使用JavaScript语言进行跨平台APP的开发.与H5开发不同的是,它使用JS桥接技术在运行时编译成各个平台的Nativ ...
- 使用嵌入式关系型SQLite数据库存储数据
除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库—SQLite, 1.SQLite3支持 ...
随机推荐
- React中使用CSS的N种方式
1.在组件中直接使用style,注意,div1各个属性值加双引号 const div1 = { width: "300px", margin: "30px auto&qu ...
- leecode62不同路径(动态规划)
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 "Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为 &quo ...
- vue的易错点合集
关于vue的操作,可以借鉴到一些Ajax的方法和思路,但是因为语法的不一样,所以易错点多在语法. 第一步要引用相对的方法 div的id名称应该与下文的el名称一致 挂载方法created,相当于aja ...
- git-开发常用命令
1.本地克隆代码 git clone http地址 2.查看所有分支 git branch -a remotes/origin开头 :远程分支 3.切换分支 git checkout 分支名 4.删除 ...
- 训练题——ADC读取温度
Author:XuanYu 利用ADC测量单片机内部温度 废话不多说,直接开搞. 科普 先科普一下ADC(不是 AD carry!),ADC是模数转化器,就是模拟信号转换成数字信号的东西,通常的模数转 ...
- ASCII,unicode与utf-8的区别
ASCII,unicode与utf-8的区别: ASCII码只有127个字母被编到计算机中,无法处理中文,ASCII 编码是 1 个字节 unicode是为了解决因各国标准不同而产生乱码的问题.uni ...
- 【APT】Hades APT组织针对乌克兰发起网络攻击事件分析
背景 Hades一个充满神秘色彩的APT组织,该组织因为2017年12月22日针对韩国平昌冬奥会的攻击活动被首次发现,后来卡巴斯基将该次事件的攻击组织命名为Hades.但是该攻击组织的归属问题却一直未 ...
- ES6 函数的扩展 rest参数
function add(...values) { let sum = 0; for (var val of values) { sum += val; } return sum; } add(2, ...
- Vue中nextTick的时序问题
前言 Vue.$nextTick这个API相信很多人都用过,按照文档的解释,"在下次DOM更新循环结束之后执行延迟回调.在修改数据之后立即使用这个方法,获取更新后的DOM".我们通 ...
- Vuex----Actions
Actions用于处理异步任务. 如果通过异步操作变更数据,必须通过 Action,而不能使用Mutation,但是在 Action中还是要通过触发Mutation的方式间接变更数据. 注意: 在Ac ...