//我这个封装通过promise返回出去!!!
//我这个封装通过promise返回出去!!!
//创建数据库或者有该数据库就打开,    这一步必须要!
export function openSqlite(cb) {
    //创建数据库或者打开
    //这plus.sqlite只在手机上运行
    plus.sqlite.openDatabase({
        name: 'wallet', //数据库名称
        path: '_doc/wallet.db', //数据库地址,uniapp推荐以下划线为开头,这到底存在哪里去了,我也不清楚,哈哈
        success(e) {
            cb(e)
        },
        fail(e) {
            cb(e)
        }
    })
}

//在该数据库里创建表格,   这一步也必须要!
//下面注释里说的都是说sql:'create table if not exists....这里
//userInfo是表格名,你也可以写其他的名,不能用数字作为表格名的开头!!!
//括号里是表格的结构,列,这里我写了四列,list,id,gender,avatar这四列
//list后面大写的英文是自动增加的意思,因为表格里的每一行必须有唯一标识
//这sql语句会数据库的应该都看的懂,我是前端菜鸡,所以详细说明以便跟我一样不懂sql的前端看
//"id" TEXT  意思是这一列放的值为字符串之类的,如果是想存数字之类的就改为INTEGER
//数据库不能存对象,数组
export function creatWalletSQL(cb) {
    plus.sqlite.executeSql({
        name: 'wallet',
        //表格创建或者打开,后面为表格结构
        sql: 'create table if not exists wallet("id" INTEGER PRIMARY KEY AUTOINCREMENT,"addr" TEXT,"prekey" TEXT,"pwd" TEXT)',
        success(e) {
            cb(e);
        },
        fail(e) {
            cb(e);
        }
    })
}

//向表格里添加数据
//根据表格的列来添加信息
//因为list列我设为自动增加,所以不用添加数据
//values里是传过来要存的值,我这里是动态的,单引号加双引号拼接
export function addWalletData(obj, cb) {
    //判断有没有传参
    var addr = obj.addr || null; //地址
    var prekey = obj.prekey || null; //私钥
    var pwd = obj.pwd || null; //密码
    plus.sqlite.executeSql({
        name: 'wallet',
        sql: 'insert into wallet(addr,prekey,pwd) values("' + addr + '","' + prekey + '","' + pwd + '")',
        success(e) {
            cb(e);
        },
        fail(e) {
            console.log(e)
            cb(e);
        }
    })
}

//查询获取数据库里的数据
//根据传过来的值来获取信息,我这里写了可以有两个条件来获取,都是动态的
//第一个参数为表格名,aa,bb分别为列名和列的值 , cc,dd同前面
//传的参数按1,3,5来传,传一个,传三个,传五个参数,不能只传两个或者四个
export function queryWallet(name, arry, cb) {
    if (arry.length == 0) {
        var sql = 'select * from ' + name + '';
    } else {
        var sql = "select * from " + name + " where " + arry[0] + "='" + arry[1] + "'";
    }
    plus.sqlite.selectSql({
        name: 'wallet',
        sql: sql,
        success(e) {
            cb(e);
        },
        fail(e) {
            cb(e);
        }
    })
}

//删除数据库里的数据
//参数跟上面查询获取数据一样
//传的参数按1,3,5来传,传一个,传三个,传五个参数,不能只传两个或者四个
export function deleteWllet(name, arry, cb) {
    var sql = 'delete from ' + name + ' where ' + arry[0] + '="' + arry[1] + '"';
    plus.sqlite.executeSql({
        name: 'wallet',
        sql: sql,
        success(e) {
            cb(e);
        },
        fail(e) {
            cb(e);
        }
    })
}

//修改数据表里的数据
//第一个参数为表格名,name为要修改的列名,cont为要修改为什么值,use,sel为搜索条件,分别是列名和列值
//传的参数按1,3,5来传,传一个,传三个,传五个参数,不能只传两个或者四个
export function modifyWallet(listName, newArry, ifArry,cb) {
    //表格名,要修改地方的列名,修改后的内容,修改条件查询,列名,内容
    var sql = 'update ' + listName + ' set ' + newArry[0] + '="' + newArry[1] + '" where ' + ifArry[0] + '="' + ifArry[1] + '"';
    //where前面的是要修改的,后面的是条件,选择哪个
    plus.sqlite.executeSql({
        name: 'wallet',
        sql: sql,
        success(e) {
            cb(e);
        },
        fail(e) {
            cb(e);
        }
    })
}

//关闭数据库
export function closeSQL(name) {
    return new Promise((resolve, reject) => {
        plus.sqlite.closeDatabase({
            name: 'wallet',
            success(e) {
                resolve(e);
            },
            fail(e) {
                reject(e);
            }
        })
    })
}

//监听数据库是否开启
export function isOpen(cb) {
    var ss = 'wallet';
    var qq = '_doc/wallet.db';
    //数据库打开了就返回true,否则返回false
    var open = plus.sqlite.isOpenDatabase({
        name: ss,
        path: qq
    })
    cb(open)

}

//一次获取指定数据条数
//不想一次性把数据全拿过来就可以这样写
//id为表格名,desc代表倒序拿数据,正常是从第一条开始拿,倒序就从最后一条也是最新的一条数据开始拿
//limit 15 offset '+num+'',后面这是两个单引号,这句的意思是跳过多少条拿15条数据,num是动态值
//比如你刚开始给num设为0,那就从最后面的数据开始拿15条,你下次肯定不想再拿刚刚获取到的数据,所以可以让num为15,这样就能一步一步的拿完所有的数据
export function pullSQL(id, num) {
    //id为表名,num为跳过多少条数据
    //根据list来倒序拿数据,跳过num条拿取15条
    return new Promise((resolve, reject) => {
        plus.sqlite.selectSql({
            name: 'wallet',
            sql: 'select * from ' + id + ' order by list desc limit 15 offset ' + num + '',
            success(e) {
                resolve(e);
            },
            fail(e) {
                reject(e);
            }
        })
    })
}

uniapp 使用本地数据库相关推荐

  1. android读取excel数据库,Android 读取Excel数据并保存在本地数据库

    在工作中遇到需要将Excel的数据读取出来并保存在本地数据库中的操作,数据如下: 图片.png 需要做以下准备: 读取Excel的jar包[文章末尾会分享该jar包] 保存数据的数据库框架,在这里我们 ...

  2. Windows Phone本地数据库(SQLCE):5、[Association]attribute(翻译)(转)

    这是"windows phone mango本地数据库(sqlce)"系列短片文章的第五篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆 ...

  3. Windows Phone开发(48):不可或缺的本地数据库

    原文:Windows Phone开发(48):不可或缺的本地数据库 也许WP7的时候,是想着让云服务露两手,故似乎并不支持本地数据库,所有数据都上传上"云"数据库中.不过呢,在SD ...

  4. 如何将本地数据库迁移到数据库上?

    使用数据传输服务(DTS)将本地数据库迁移到 阿里云的云数据库RDS,可以实现应用不停服务的情况下,平滑完成数据库的迁移工作.接下来我们将学习下如何使用DTS将本地数据库迁移到RDS上. 背景 DTS ...

  5. Windows Phone本地数据库(SQLCE):11、使用LINQ查询数据库(翻译) (转)

    这是"windows phone mango本地数据库(sqlce)"系列短片文章的第十一篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将 ...

  6. HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)...

    1.Web Storage HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能. 以前都是用cookies保存用户名等简单信息. 但是coo ...

  7. WPF技术触屏上的应用系列(二): 嵌入百度地图、API调用及结合本地数据库在地图上进行自定义标点的实现...

    原文:WPF技术触屏上的应用系列(二): 嵌入百度地图.API调用及结合本地数据库在地图上进行自定义标点的实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系 ...

  8. 基于html的数据库,基于HTML5的本地数据库与服务端数据库的协同研究

    摘要: Web应用特别是移动Web应用已深入到人们生活.工作中,成为不可缺失的一部分.源于跨操作系统平台实现的便捷,当前基于智能手机.平板和手持移动终端的浏览器前端应用在快速增长.然而在间歇的网络可用 ...

  9. 错误解决记录------------mysql连接本地数据库显示can't get hostname for your address

    mysql连接本地数据库遇到 can't get hostname for your address 不明原因的本地mysql数据库连接不上,总是显示can't get hostname for yo ...

  10. Html5本地存储和本地数据库

    个网站如何能在客户的浏览器存储更多的数据呢? 在Html4的时代在浏览器端存储点网站个性化的数据,尤其是用户浏览器的痕迹,用户的相关数据等一般只能存储在Cookie中,但是大多是浏览器对于Cookie ...

最新文章

  1. 自定义图框_Smart3D自定义图纸属性及其应用
  2. EL表达式的作用与限制条件
  3. 算法 - 堆排序(大顶堆、小顶堆)
  4. 《Python Cookbook 3rd》笔记(4.13):创建数据处理管道
  5. onpagefinished等了很久才执行_互联网职业经理人的素养(二):执行力
  6. 深入linux中重定向及管道详解
  7. hashmap扩容线程安全问题_HashMap在1.7 1.8中的线程安全问题
  8. net 进阶学习 WebApi (2)
  9. python工具包: pandas
  10. 要尊重员工的正当权益
  11. (转)周明:未来5-10年,自然语言处理将走向成熟
  12. 扫雷android源代码,Android实现扫雷小游戏
  13. 《Spring5官方文档》新功能
  14. iPad2 3G版 5.1.1降级到4.3.3(需要4.3.3SHSH备份)
  15. 木讷的程序员需要知道的事情 (二)
  16. JAVA学习(三)----常量和数据类型
  17. 反编译008神器,修改手机型号与android版本号信息
  18. 跨境电商如何做好引流?做亚马逊速卖通独立站的看过来
  19. 均值滤波、中值滤波【MATLAB】【图像处理】
  20. 使用离线语音识别实现对设备经纬度参数的设置

热门文章

  1. logit回归模型假设_LOGISTIC回归分析
  2. 子网掩码计算java,JAVA获取子网掩码源代码
  3. jQuery按住滑块拖动验证插件
  4. 苹果手机解压缩软件_照片压缩软件哪款好用?推荐5款好用的图片压缩软件
  5. 谷歌地图开放俄军事设施高分辨率卫星图
  6. 史上最强之《Pyqt》写游戏
  7. h3c无线控制器ac配置
  8. 微信表情存入mysql
  9. SCT2620MRER,替代TP54240,TPS54260,3.8V-60V Vin,2.5A,高效、频率可调、降压DCDC转换器
  10. latex制作中英文简历(含模板代码)