uniapp 使用本地数据库

uniapp 使用本地数据库//我这个封装通过promise返回出去!!!//我这个封装通过promise返回出去!!!//创建数据库或者有该数据库就打开,这一步必须要!exportfunctionopenSqlite(cb){//创建数据库或者打开//这plus.sqlite只在手机上运行plus.sqlite.openDatabase({name:’wallet’,//数据库名称path:’_doc/wallet.db’,//数据库地址,…

大家好,又见面了,我是你们的朋友全栈君。

//我这个封装通过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);
            }
        })
    })
}
 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139672.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月29日 下午12:46
下一篇 2022年5月29日 下午12:46


相关推荐

  • SpringBoot整合Redis使用教程

    SpringBoot整合Redis使用教程redis 在 springboot 中的简单使用

    2026年1月15日
    2
  • QPS从0到4000请求每秒,谈达达后台架构演化之路[通俗易懂]

    QPS从0到4000请求每秒,谈达达后台架构演化之路

    2022年3月7日
    53
  • SQL Server2008安装详细教程[通俗易懂]

    SQL Server2008安装详细教程[通俗易懂]1.将光盘文件解压成文件夹格式,(解压过程比较慢,请耐心等待);2.打开开始菜单的设置;3.打开设置后,点击更新和安全,然后进入;4.在Windows安全中心,将其关闭(注意我这里已经关闭了);5.然后再到安装包文件夹目录,找到setup.exe文件,右击,以管理员身份运行;6.右击运行后,会出来这个页面(如果没有出现这个页面,请直接跳转至第14步),然后点击下载并安装此功能,进入下一步;7.进入下一个页面后,你会发现它会出来一个正在下载所需的文件的页面,然后等待就行;8

    2022年6月23日
    53
  • Windows 10 如何添加开机启动项

    Windows 10 如何添加开机启动项如果想要删除开机启动项 可以选中该程序 然后设置 禁用 即可 如果想要添加启动项 可以将软件快捷方式移入开机启动文件夹中 我们可以在任务管理器中查看是否成功添加开机启动项 开机启动文件夹如图所示 此时文件夹中内容为空 按下 win R 调出运行窗口 并输入 即可进入开机启动文件夹

    2026年3月19日
    3
  • flash怎么强制gc_Adode Flash初级教程

    flash怎么强制gc_Adode Flash初级教程AdodeFlash初级教程(湖南信息职业技术学院xxgc.hniu.cn教务处,湖南长沙410200)第一章入门一、概述1、定义:矢量二维动画2、适用范围:1.针对与网页2.动漫3、特点:a矢量动画制作模式,文件容量小b支持多类型文件导入(图片、视频、音频)c支持流媒体技术d交互动画4、网页四剑客简介adobedreamweaver:是一个网页排版软件,不是设计软件,唯一体现设计软件的地方是c…

    2025年12月1日
    5
  • 收藏!!「自然语言处理(NLP)」全球学术界知名学者教授信息大盘点(全)!

    收藏!!「自然语言处理(NLP)」全球学术界知名学者教授信息大盘点(全)!来源:AINLPer微信公众号(点击了解一下吧)编辑:ShuYini校稿:ShuYini时间:2020-1-13引言    人工智能发展迅速,近几年自然语言处理已经成为热门研究方向,根据这些会议和期刊上近10年发表论文的引用情况(根据GoolgeScholar)生成了高引学者列表。供大家参考学习。1、RyanT.Mcdonald【Google】个人主页:https…

    2022年9月29日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号