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支持 ...
随机推荐
- eclipse的快捷键都有哪些
非常实用的快捷键 Ctrl+D: 删除当前行 Ctrl+Alt+↓: 复制当前行到下一行 Ctrl+Alt+↑: 复制当前行到上一行 Alt+↓: 当前行和下面一行交互位置 Alt+↑: 当前行和上面 ...
- 2019-2020-1 20199318《Linux内核原理与分析》第八周作业
第7章 可执行程序工作原理 一.学习笔记 1.ELF 2.程序编译 3.连接与库 二.试验记录 1.开始先更新内核,再用test_exec.c将test.c覆盖掉 2.test.c文件中增加了exec ...
- Nginx 配置https的单向或双向认证
一.自制https认证证书 1. 制作CA证书 A. 生成CA私钥:openssl genrsa -des3 -out ca.key 2048,注意要输入两次密码,若去除密码使用openssl rsa ...
- idea引入ojdbc包报错
网上下载或者让同事传两个jar过来,ojdbc6-11.2.0.7.0.jar 以及jconn3.0.jar 放入同一个文件夹中: 在此文件夹中cmd如下:回车,进入cmd控制台. 输入如下两个命令: ...
- Docker部署OpenWRT-旁路由
1.确认网卡名称 命令 ip addr 显示如下图的 enp2s0 就是我们准备进行链接的网卡名称. 2.打开网卡的混杂模式 sudo ip link set enp2s0 promisc on 3. ...
- vue父子件,子件页面table数据列按条件显示不同的内容
需求:在父件中点击按钮.子件弹框中,table列根据条件显示不同的数据 实现思路:点击按钮,执行不同的方法,方法中参数值不同,从而展示不同的columns. 父件按钮如下图: 父件中导入子件需要注意的 ...
- Windows 10 ~ Jenkins 安装
首先: jenkins是由java写的,所以在使用之前请安装好JDK(最好安装JDK1.8) 下载jenkins.war包并放到一个自己创建的目录D:\jenkins下:https://mirrors ...
- C# WPF 自学 MVVM简单介绍
一.MVVM介绍 MVVM是Model-View-ViewModel(模型-视图-视图模型)的缩写形式 1.View就是用xaml实现的界面,负责与用户交互,接收用户输入,把数据展现给用户. 2.Vi ...
- pycharm的安装与使用
官网下载最新版本,然后用激活码,激活,注意是专业版. 方法找到后更新在这里. 进入软件之后创建新的文件夹,可以自定义,建议自定义在系统盘以外, 1.新建文件略过 2.ctrl + 鼠标中键, 调节字体 ...
- c++学习2 基础关键词
三 volatile强制访问内存 在一个变量的频繁使用中,系统为了提高效率,会自动将内存里面的数据放入CPU里的寄存器里.但在某些特殊场景下,放入寄存器这个操作反倒会导致CPU无法及时获取最新的一手数 ...