1、sqlite.js

import Vue from 'vue'
const app = new Vue()//name:数据库名字
//databaseName:表名字
//tableField:表的字段
//dataType:字段类型
//saveData:存储数据
//field:查询的字段名,数组形式传值
//数据库查询成功和失败的数据处理
let success = {code: 0,data: null,msg: '成功'
}
let fail = {code: 1,data: null,msg: null
}//打开数据库
function createDB(name) {return new Promise((resolve, reject) => {plus.sqlite.openDatabase({name: name,path: '_doc/' + name + '.db',success(res) {resolve(success); //成功回调},fail(e) {reject(e); //失败回调}})})
}//判断数据库是否打开
function validDBOpen(name) {return plus.sqlite.isOpenDatabase({name: name,path: '_doc/' + name + '.db'});
}// 关闭数据库
function closeDB(name) {return new Promise((resolve, reject) => {plus.sqlite.closeDatabase({name: name,success: (e) => {resolve(success);},fail: (e) => {fail.data = ereject(fail); //失败回调}});})
}//一次获取指定数据条数
//不想一次性把数据全拿过来就可以这样写
//id为表格名,desc代表倒序拿数据,正常是从第一条开始拿,倒序就从最后一条也是最新的一条数据开始拿
//limit 15 offset '+num+'',后面这是两个单引号,这句的意思是跳过多少条拿15条数据,num是动态值
//比如你刚开始给num设为0,那就从最后面的数据开始拿15条,你下次肯定不想再拿刚刚获取到的数据,所以可以让num为15,这样就能一步一步的拿完所有的数据
// function pullSQL(id,num){//  //id为表名,num为跳过多少条数据
//  //根据list来倒序拿数据,跳过num条拿取15条
//  return new Promise((resolve,reject) =>{//      plus.sqlite.selectSql({//          name:'pop',
//          sql:'select * from '+id+' order by list desc limit 15 offset '+num+'',
//          success(e){//              resolve(e);
//          },
//          fail(e){//              reject(e);
//          }
//      })
//  })
// }// 执行事务 begin(开始事务)、commit(提交)、rollback(回滚)。
function transactionDB(name, operation) {return new Promise((resolve, reject) => {plus.sqlite.transaction({name: name,operation: operation,success: function(e) {console.log("执行事务成功")resolve(success);},fail: function(e) {console.log("执行事务失败")fail.data = e;reject(fail); //失败回调}});})
}// 执行(增删改)SQL语句
function executeSQL(name, sql) {return new Promise((resolve, reject) => {plus.sqlite.executeSql({name: name,sql: sql,success: function(e) {resolve(success);},fail: function(e) {fail.data = e;reject(fail); //失败回调}});})
}// 执行查询SQL语句
function selectSQL(name, sql, success) {return new Promise((resolve, reject) => {plus.sqlite.selectSql({name: name,sql: sql,success: function(data) {success.data = data;resolve(success)},fail: function(error) {fail.data = errorreject(fail)}});})
}//删除表格
function daleteTable(name, databaseName) {return new Promise((resolve, reject) => {plus.sqlite.executeSql({name: name,sql: 'drop table ' + databaseName,success: function(e) {resolve(success);},fail: function(e) {fail.data = e;reject(fail); //失败回调}});})
}//创建表格
function createTable(name, databaseName, tableField, dataType) {var data = [];for (var i = 0; i < tableField.length; i++) {data.push('"' + tableField[i] + '" ' + dataType[i])}var totalData = data.join(',')let sql = `create table if not exists ${databaseName}  (${totalData})`;console.log(sql)return new Promise((resolve, reject) => {plus.sqlite.executeSql({name: name,sql: sql,success: function(e) {resolve(success);},fail: function(e) {fail.data = e;reject(fail); //失败回调}});})
}//增
async function insertSqlState(name, databaseName, tableField, saveData) {//databaseName:表名//tableField:字段名数组//saveData:存储数据var sql;var fielData = tableField.join(',');var result;//对象数据if (saveData instanceof Object) {var cellAry = [];tableField.forEach(function(item) {cellAry.push('"' + saveData[item] + '"')})var celldata = "(" + cellAry.join(',') + ")"sql = "insert into " + databaseName + "(" + fielData + ")" + " values" + celldata} else {//数组数据var totalAry = []saveData.forEach((currentValue, index) => {var cellAry = [];tableField.forEach((item, ind) => {cellAry.push('"' + currentValue[tableField[ind]] + '"')})var celldata = "(" + cellAry.join(',') + ")"totalAry.push(celldata)})var totalStr = totalAry.join(',')sql = "insert into " + databaseName + "(" + fielData + ")" + " values" + totalStr// console.log(totalStr)}console.log(sql)console.log(celldata)console.log(fielData)// console.log(sql)await  executeSQL(name, sql).then(res=>{console.log("执行增加操作成功")console.log(res)result = res;},error=>{console.log("执行增加操作失败")console.log(error)result = error;})return result
}//删
async function deleteSqlState(name, databaseName, condition) {//condition:条件// var sql = "delete from " + databaseName+ " where id=1";var sql;var result;if (!condition) {sql = "delete from " + databaseName} else {sql = "delete from " + databaseName + " where " + condition}await executeSQL(name, sql).then(res => {console.log("执行删除操作成功")console.log(res)result = res;console.log(result)}, error => {console.log("执行删除操作失败")console.log(error)result = error;})console.log(result)return result
}//改
async function updateSqlState(name, databaseName, params, condition) {var result;var sql = "update " + databaseName + " set " + params + " where " + condition;await executeSQL(name, sql).then(res => {console.log("执行修改操作成功")console.log(res)result = res;}, error => {console.log("执行修改操作失败")console.log(error)result = error;})return result
}//查询封装的sql
function checkSqlState(field, databaseName, condition) {//"select 字段名 from 表名 where 查询条件 group by 分组的字段 having 筛选条件 order by 排序字段"//field:查询的字段名,数组形式传值//condition:查询条件var sql;var fieldAry = []field.forEach((item) => {fieldAry.push(item)})var fieldStr = fieldAry.join(',')if (condition) {sql = "select " + fieldStr + " from " + databaseName + " where " + condition} else {sql = "select " + fieldStr + " from " + databaseName}// console.log(sql)return sql;
}//存储数据
// function saveData(name, databaseName, tableField, dataType, saveData) {//  createDB(name); //打开数据库
//  if (validDBOpen(name)) { //如果数据库打开
//      createTable(name, databaseName, tableField, dataType) //如果不存在就创建表
//      deleteSqlState(name, databaseName)
//      insertSqlState(name, databaseName, tableField, saveData); //插入数据
//      closeDB(name)
//  }
// }function saveData(name, databaseName, tableField, dataType, saveData) {transactionDB(name, 'begin').then(res => {console.log("执行事务开始成功")console.log(res)//如果不存在就创建表createTable(name, databaseName, tableField, dataType).then(res => {console.log("数据库创建成功")deleteSqlState(name, databaseName).then(res=>{if(res.code==0){insertSqlState(name, databaseName, tableField, saveData).then(res=>{console.log(res)if(res.code==0){console.log("保存数据成功")transactionDB(name, 'commit').then(res => {console.log('提交成功')})}else{transactionDB(name, 'rollback').then(res => {console.log('回滚成功')})}})}})})}, error => {console.log("执行事务开始失败")console.log(res)});
}//查询数据
async function queryData(name, databaseName, field) {createDB(name); //打开数据库if (validDBOpen(name)) { //如果数据库打开let sql = checkSqlState(field, databaseName)let a = await selectSQL(name, sql)closeDB(name)return a;}
}module.exports = {createDB,validDBOpen,closeDB,transactionDB,executeSQL,selectSQL,createTable,insertSqlState,deleteSqlState,updateSqlState,checkSqlState,saveData,queryData
}

2、constant.js

export default {dbName: "xazysoft.db",version: 1,Test: {fieldName: "Test",fieldHeader: ["id", "age", "name"],fieldType: ["INT(100)", "INT(100)", "CHAR(100)"]},Submit: {fieldName: "Submit",//主键ID,商户信息ID,商户信息Code,组织机构管理处ID,项目名称,//项目编号,项目地址,建筑面积,占地面积,绿化面积,//项目简介,项目照片,是否删除:0未删除、1已删除,创建时间,操作账户类型:0企业账户/1员工账户,//操作人id,备注,组织机构名称,操作人姓名,组织机构电话fieldHeader: ["id", "merchantId", "merchantCode", "groupId", "community","number", "address", "buildArea", "floorArea", "greenArea","intro", "picture", "remove", "createDate", "accountType","operatorId", "remark", "`group`", "operatorName", "groupPhone","flag"],fieldType: ["INTEGER", "INTEGER", "TEXT", "INTEGER", "TEXT","TEXT", "TEXT", "REAL", "REAL", "REAL","TEXT", "TEXT", "INTEGER", "TEXT", "INTEGER","INTEGER", "TEXT", "TEXT", "TEXT", "TEXT","INT(100)"]},// 测试所有小区数据testProject: {fieldName: "testProject",//主键ID,商户信息ID,商户信息Code,组织机构管理处ID,项目名称,//项目编号,项目地址,建筑面积,占地面积,绿化面积,//项目简介,项目照片,是否删除:0未删除、1已删除,创建时间,操作账户类型:0企业账户/1员工账户,//操作人id,备注,组织机构名称,操作人姓名,组织机构电话fieldHeader: ["id", "merchantId", "merchantCode", "groupId", "community","number", "address", "buildArea", "floorArea", "greenArea","intro", "picture", "remove", "createDate", "accountType","operatorId", "remark", "`group`", "operatorName", "groupPhone"],fieldType: ["INTEGER", "INTEGER", "TEXT", "INTEGER", "TEXT","TEXT", "TEXT", "REAL", "REAL", "REAL","TEXT", "TEXT", "INTEGER", "TEXT", "INTEGER","INTEGER", "TEXT", "TEXT", "TEXT", "TEXT"]},// 集团公司company: {fieldName: "company",//主键ID,商户信息Code,组织机构名称,组织机构编号,组织机构地址,//组织机构电话,组织机构类别(集团公司/分公司/管理处),父类ID,父类名称,创建日期,//操作账户类型(0企业账户/1员工账户),操作人id,V6组织机构父级主键ID,V6组织机构主键ID,备注,//操作人姓名,小区信息fieldHeader: ["id", "merchantCode", "groupName", "number", "address","phone", "category", "parentId", "father", "createDate","accountType", "operatorId", "externalParentId", "externalId", "remark","operatorName", "communities"],fieldType: ["INTEGER", "TEXT", "TEXT", "TEXT", "TEXT","TEXT", "TEXT", "INTEGER", "TEXT", "TEXT","INTEGER", "INTEGER", "TEXT", "TEXT", "TEXT","TEXT", "TEXT"]},// 分公司filiale: {fieldName: "filiale",//主键ID,商户信息Code,组织机构名称,组织机构编号,组织机构地址,//组织机构电话,组织机构类别(集团公司/分公司/管理处),父类ID,父类名称,创建日期,//操作账户类型(0企业账户/1员工账户),操作人id,V6组织机构父级主键ID,V6组织机构主键ID,备注,//操作人姓名,小区信息fieldHeader: ["id", "merchantCode", "groupName", "number", "address","phone", "category", "parentId", "father", "createDate","accountType", "operatorId", "externalParentId", "externalId", "remark","operatorName", "communities"],fieldType: ["INTEGER", "TEXT", "TEXT", "TEXT", "TEXT","TEXT", "TEXT", "INTEGER", "TEXT", "TEXT","INTEGER", "INTEGER", "TEXT", "TEXT", "TEXT","TEXT", "TEXT"]},// 管理处group: {fieldName: "group",//主键ID,商户信息Code,组织机构名称,组织机构编号,组织机构地址,//组织机构电话,组织机构类别(集团公司/分公司/管理处),父类ID,父类名称,创建日期,//操作账户类型(0企业账户/1员工账户),操作人id,V6组织机构父级主键ID,V6组织机构主键ID,备注,//操作人姓名,小区信息fieldHeader: ["id", "merchantCode", "groupName", "number", "address","phone", "category", "parentId", "father", "createDate","accountType", "operatorId", "externalParentId", "externalId", "remark","operatorName", "communities"],fieldType: ["INTEGER", "TEXT", "TEXT", "TEXT", "TEXT","TEXT", "TEXT", "INTEGER", "TEXT", "TEXT","INTEGER", "INTEGER", "TEXT", "TEXT", "TEXT","TEXT", "TEXT"]},// 所有小区数据project: {fieldName: "project",//主键ID,商户信息ID,商户信息Code,组织机构管理处ID,项目名称,//项目编号,项目地址,建筑面积,占地面积,绿化面积,//项目简介,项目照片,是否删除:0未删除、1已删除,创建时间,操作账户类型:0企业账户/1员工账户,//操作人id,备注,组织机构名称,操作人姓名,组织机构电话fieldHeader: ["id", "merchantId", "merchantCode", "groupId", "community","number", "address", "buildArea", "floorArea", "greenArea","intro", "picture", "remove", "createDate", "accountType","operatorId", "remark", "`group`", "operatorName", "groupPhone"],fieldType: ["INTEGER", "INTEGER", "TEXT", "INTEGER", "TEXT","TEXT", "TEXT", "REAL", "REAL", "REAL","TEXT", "TEXT", "INTEGER", "TEXT", "INTEGER","INTEGER", "TEXT", "TEXT", "TEXT", "TEXT"]},//楼宇building: {fieldName: "building",//楼宇/公区ID,商户信息ID,商户信息Code,小区ID,组织机构ID,//楼宇/公区名称,楼宇/公区编号,楼层数,套户数,单元数,//建筑面积,占地面积,使用面积,是否公区(0否、1是),是否删除(0未删除、1已删除),//地理位置,创建日期,操作账户类型(0企业账户/1员工账户),操作人id,备注,//小区名称,操作人姓名,单元实体fieldHeader: ["id", "merchantId", "merchantCode", "groupId", "community","number", "address", "buildArea", "floorArea", "greenArea","intro", "picture", "remove", "createDate", "accountType","operatorId", "remark", "`group`", "operatorName", "groupPhone"],fieldType: ["INTEGER", "INTEGER", "TEXT", "INTEGER", "INTEGER","TEXT", "TEXT", "INTEGER", "INTEGER", "INTEGER","REAL", "REAL", "REAL", "INTEGER", "INTEGER","TEXT", "TEXT", "INTEGER", "INTEGER", "TEXT","TEXT", "TEXT", "TEXT"]},//单元unit: {fieldName: "unit",//单元ID,商户信息ID,商户信息Code,单元名,楼宇ID,//是否删除(0未删除、1已删除),创建日期,操作账户类型(0企业账户/1员工账户),操作人id,备注fieldHeader: ["id", "merchantId", "merchantCode", "unitName", "buildingId","remove", "createDate", "accountType", "operatorId", "remark"],fieldType: ["INTEGER", "INTEGER", "TEXT", "TEXT", "INTEGER","INTEGER", "TEXT", "INTEGER", "INTEGER", "TEXT"]},//套户room: {fieldName: "room",//主键ID,商户信息编号,商户信息ID,单元ID,套户编号,//套户长编号,楼宇ID,楼层/片区ID,组织机构Id,项目ID,//计租面积,建筑面积,计费面积,套户户型,套户图片,//套户是否可租(0不可租、1可租),是否删除(0未删除、1已删除),套户使用状态(已租、未租、自住),创建日期,操作账户类型(0企业账户/1员工账户),//操作人id,备注,楼层名称,单元名称,楼宇名称,//项目名称,套户使用状态名称(已租、未租、自住),操作人姓名,业主ID集合fieldHeader: ["id", "merchantCode", "merchantId", "unitName", "buildingId","remove", "createDate", "accountType", "operatorId", "remark"],fieldType: ["INTEGER", "TEXT", "INTEGER", "INTEGER", "TEXT","TEXT", "INTEGER", "INTEGER", "INTEGER", "INTEGER","REAL", "REAL", "REAL", "TEXT", "TEXT","INTEGER", "INTEGER", "INTEGER", "TEXT", "INTEGER","INTEGER", "TEXT", "TEXT", "TEXT", "TEXT","TEXT", "TEXT", "TEXT", "TEXT"]},// 小区community: {fieldName: "community",//主键ID,商户信息ID,商户信息Code,组织机构管理处ID,项目名称,//项目编号,项目地址,建筑面积,占地面积,绿化面积,//项目简介,项目照片,是否删除:0未删除、1已删除,创建时间,操作账户类型:0企业账户/1员工账户,//操作人id,备注,组织机构名称,操作人姓名,组织机构电话fieldHeader: ["id", "merchantId", "merchantCode", "groupId", "community","number", "address", "buildArea", "floorArea", "greenArea","intro", "picture", "remove", "createDate", "accountType","operatorId", "remark", "`group`", "operatorName", "groupPhone"],fieldType: ["INTEGER", "INTEGER", "TEXT", "INTEGER", "TEXT","TEXT", "TEXT", "REAL", "REAL", "REAL","TEXT", "TEXT", "INTEGER", "TEXT", "INTEGER","INTEGER", "TEXT", "TEXT", "TEXT", "TEXT"]},// 所有部门数据department: {fieldName: "department",//主键ID,商户信息ID,部门名称,部门电话,组织机构管理处ID(可能是:集团公司/分公司/管理处),//项目ID(可能是:项目下的部门),父级部门ID,是否删除,创建时间,商户编码,//操作账户类型(0企业账户/1员工账户),操作人id,备注,组织机构名称,组织机构类型 集团公司、分公司、管理处,//项目名称,子部门信息集合,操作人姓名fieldHeader: ["id", "merchantId", "deptName", "deptPhone", "groupId","communityId", "parentId", "remove", "createDate", "merchantCode","accountType", "operatorId", "remark", "groupName", "category","community", "departments", "operatorName"],fieldType: ["INTEGER", "INTEGER", "TEXT", "TEXT", "INTEGER","INTEGER", "INTEGER", "INTEGER", "TEXT", "TEXT","INTEGER", "INTEGER", "TEXT", "TEXT", "TEXT","TEXT", "TEXT", "TEXT"]},//所有人员数据employee: {fieldName: "employee",//主键ID,商户信息ID,商户编码,员工姓名,员工性别,//联系电话,身份证号,组织机构Id,所属部门ID,岗位ID,//民族,学历,籍贯,婚姻状况(Code:未婚、已婚、丧偶),员工状态(Code:在职、离职、请假、休假),//是否在岗,员工属性(0内部员工、1外部员工),是否删除,头像地址,创建时间,//操作账户类型(0企业账户/1员工账户),操作人id,备注,组织机构名称,部门名称,//岗位名称,婚姻状况名称,员工状态名称,操作人姓名,特殊字段(导入时使用,可以存组织机构名也可以存项目名)fieldHeader: ["id", "merchantId", "merchantCode", "employeeName", "sex","phone", "idCard", "groupId", "deptId", "postId","nation", "education", "nationality", "marriageStatus", "stateCode","inPost", "property", "remove", "headUrl", "createDate","accountType", "operatorId", "remark", "groupName", "deptName","postName", "marriageStatusName", "stateCodeName", "operatorName", "organizationName"],fieldType: ["INTEGER", "INTEGER", "TEXT", "TEXT", "INTEGER","TEXT", "TEXT", "INTEGER", "INTEGER", "INTEGER","TEXT", "TEXT", "TEXT", "INTEGER", "INTEGER","INTEGER", "INTEGER", "INTEGER", "TEXT", "TEXT","INTEGER", "INTEGER", "TEXT", "TEXT", "TEXT","TEXT", "TEXT", "TEXT", "TEXT", "TEXT",]},//故障种类orderType: {fieldName: "orderType",//主键ID,商户编码,管理处ID,故障类型,是否删除(0未删除、1已删除),//创建时间,备注fieldHeader: ["id", "merchantCode", "groupId", "faultType", "remove","createDate", "remark"],fieldType: ["INTEGER", "TEXT", "INTEGER", "TEXT", "INTEGER","TEXT", "TEXT"]}
};

3、downloads.js

import Vue from 'vue'
const app = new Vue()
import {saveData,daleteTable
} from "@/common/js/sqlite.js"
import constant from '@/common/js/constant.js'
// 请求项目(小区)
export async function testLoad() {try {let data = await app.$u.get(app.$api.cache.getProject + app.$SysCache.get('loginInfo').loginData.employeeId);saveData(constant.dbName, constant.testProject.fieldName, constant.testProject.fieldHeader, constant.testProject.fieldType, data.data)} catch (e) {// daleteTable(constant.dbName, constant.haha.fieldName)}
}
export async function downloadProject() {try {let data = await app.$u.get(app.$api.cache.getProject + app.$SysCache.get('loginInfo').loginData.employeeId);// saveData(constant.dbName, constant.project.fieldName, constant.project.fieldHeader, constant.project.fieldType, data.data)} catch (e) {// daleteTable(constant.dbName, constant.haha.fieldName)}
}
//请求部门
export async function downloadDepartment() {try {let data = await app.$u.get(app.$api.address.getDept + app.$SysCache.get('loginInfo').loginData.merchantId);console.log(data)// saveData(constant.dbName, constant.department.fieldName, constant.department.fieldHeader, constant.department.fieldType, data.data)} catch (e) {// daleteTable(constant.dbName, constant.department.fieldName)}
}
//请求在职在岗人员
export async function downloadEmployee() {try {let data = await app.$u.get(app.$api.address.getEmployee +'?merchantId='+ app.$SysCache.get('loginInfo').loginData.merchantId);console.log(data)// saveData(constant.dbName, constant.employee.fieldName, constant.employee.fieldHeader, constant.employee.fieldType, data.data)} catch (e) {console.log(e)// daleteTable(constant.dbName, constant.employee.fieldName)}
} 集团公司->分公司->管理处(这三层都是组织机构)
 组织机构/小区/楼宇/单元/套户//请求集团公司
export async function downloadCompany() {try {let data = await app.$u.get(app.$api.cache.getCompanys + app.$SysCache.get('loginInfo').loginData.merchantCode);console.log(data)// saveData(constant.dbName, constant.company.fieldName, constant.company.fieldHeader, constant.company.fieldType, data.data)} catch (e) {console.log(e)// daleteTable(constant.dbName, constant.company.fieldName)}
}
//请求分公司
export async function downloadFiliale() {try {let data = await app.$u.get(app.$api.cache.getFiliale + app.$SysCache.get('loginInfo').loginData.merchantCode);console.log(data)// saveData(constant.dbName, constant.filiale.fieldName, constant.filiale.fieldHeader, constant.filiale.fieldType, data.data)} catch (e) {console.log(e)// daleteTable(constant.dbName, constant.filiale.fieldName)}
}
//请求管理处
export async function downloadGroup() {try {let data = await app.$u.get(app.$api.cache.getGroup + app.$SysCache.get('loginInfo').loginData.merchantCode);console.log(data)// saveData(constant.dbName, constant.group.fieldName, constant.group.fieldHeader, constant.group.fieldType, data.data)} catch (e) {console.log(e)// daleteTable(constant.dbName, constant.group.fieldName)}
}
//请求小区
export async function downloadCommunity() {try {let data = await app.$u.get(app.$api.cache.getCommunity + app.$SysCache.get('loginInfo').loginData.merchantCode);console.log(data)// saveData(constant.dbName, constant.community.fieldName, constant.community.fieldHeader, constant.community.fieldType, data.data)} catch (e) {console.log(e)// daleteTable(constant.dbName, constant.community.fieldName)}
}
//请求楼宇
export async function downloadBuilding() {try {let data = await app.$u.get(app.$api.cache.getBuilding + app.$SysCache.get('loginInfo').loginData.merchantCode);console.log(data)// saveData(constant.dbName, constant.building.fieldName, constant.building.fieldHeader, constant.building.fieldType, data.data)} catch (e) {console.log(e)// daleteTable(constant.dbName, constant.building.fieldName)}
}
//请求单元
export async function downloadUnit() {try {let data = await app.$u.get(app.$api.cache.getUnit + app.$SysCache.get('loginInfo').loginData.merchantCode);console.log(data)// saveData(constant.dbName, constant.unit.fieldName, constant.unit.fieldHeader, constant.unit.fieldType, data.data)} catch (e) {console.log(e)// daleteTable(constant.dbName, constant.unit.fieldName)}
}
//请求套户
export async function downloadRoom() {try {let data = await app.$u.get(app.$api.cache.getRoom + app.$SysCache.get('loginInfo').loginData.merchantCode);console.log(data)// saveData(constant.dbName, constant.room.fieldName, constant.room.fieldHeader, constant.room.fieldType, data.data)} catch (e) {console.log(e)// daleteTable(constant.dbName, constant.room.fieldName)}
}
//请求故障类型
export async function downloadOrderType() {try {let data = await app.$u.get(app.$api.workorder.orderType+app.$SysCache.get('currentComInfo').groupId+"/"+app.$SysCache.get('loginInfo').loginData.merchantCode);console.log(data)// saveData(constant.dbName, constant.orderType.fieldName, constant.orderType.fieldHeader, constant.orderType.fieldType, data.data)} catch (e) {// console.log(e)// daleteTable(constant.dbName, constant.orderType.fieldName)}
}

4、test.vue

<template><view class="" style="margin-top: 40px;"><u-button type="primary" @click="chuangjian">创建数据库</u-button><u-button type="success" @click="jiancha">检查是否打开</u-button><u-button type="warning" @click="guanbi">关闭数据库</u-button><u-button type="error" @click="kaishi">开始事务</u-button><u-button type="primary" @click="xieru">写入</u-button><u-field v-model="shuru" label="输入框" placeholder="输入框" /><u-button type="success" @click="chaxun">查询</u-button><!--     <u-button type="warning" @click="shanchu">删除</u-button><u-button type="error" @click="xiugai">修改</u-button> --><!-- <u-button type="error" @click="queryTable">查询数据</u-button> --><u-button type="error" @click="deleteTable">删除表</u-button><u-button type="error" @click="insertData">插入数据</u-button><u-button type="error" @click="updateData">修改数据</u-button><u-button type="error" @click="deleteData">删除数据</u-button><u-button type="primary" @click="operateData">操作数据</u-button><u-button type="success" @click="getOfflineData">查询待提交的离线数据</u-button></view>
</template>
<script>import {createDB,validDBOpen,closeDB,transactionDB,executeSQL,selectSQL,createTable,insertSqlState,deleteSqlState,updateSqlState,checkSqlState,queryData} from '@/common/js/sqlite.js';//下载数据import {testLoad,downloadCompany,downloadFiliale,downloadGroup,downloadCommunity,downloadBuilding,downloadUnit,downloadRoom,downloadProject,downloadDepartment,downloadEmployee,downloadOrderType} from "@/common/js/downloads.js"import constant from '@/common/js/constant.js'export default {data() {return {shuru: "",test: [{"id": 1,"age": 4,"name": "李易峰"},{"id": 2,"age": 4,"name": "张峰"},{"id": 3,"age": 3,"name": "王一博"}]}},computed: {},onLoad() {this.isOpenDB();// uni.onNetworkStatusChange((res) => {//    //监听网络  //  console.log('MIXIN 下监听网络');//     // console.log(res.isConnected);  //    // console.log(res.networkType);  //    if (res.networkType == 'none') {//      console.log('无网络');//         this.insertData()//         // 获取离线数据 //    } else if (res.networkType == 'wifi' || res.networkType == '4g') {//        console.log('wifi');//        // 有网的情况下先提交离线数据//      // 再更新本地数据库//       this.xieru()//      //切换到有网络时,需要查看是否有离线数据,并进行提交。  //      this.getOfflineData(); //查询是否有离线数据  //  }// })this.getNetworkType()},methods: {loadData() {let requestList = [testLoad()]return new Promise((resolve, reject) => {return Promise.all(requestList).then(res => {resolve(res);}).catch(err => {reject(err);})})},getNetworkType() {//获取网络信息  uni.getNetworkType({success: res => {if (res.networkType == 'none') {console.log('无网络');// this.insertData()// 获取离线数据 } else if (res.networkType == 'wifi' || res.networkType == '4g') {console.log('wifi');// 有网的情况下先提交离线数据// 再更新本地数据库this.loadData().then(res => {console.log("执行成功")console.log(res)}, error => {console.log(error)})//切换到有网络时,需要查看是否有离线数据,并进行提交。  this.getOfflineData(); //查询是否有离线数据  }}})},//查询是否有缓存getOfflineData() {//查询是否有离线写入,未提交数据; flag == 0  false。  // console.log("切换至网络,查询是否有缓存未提交数据");  var sql = `SELECT * FROM ${constant.Submit.fieldName}  WHERE  flag = 'false' `console.log(sql)selectSQL(constant.dbName, sql).then(res => {console.log(res)console.log(res.length)for (var i = 0; i < res.length; i++) {let val = this.submitData();console.log(val)if (val) {//更新本地数据库待提交数据状态this.updatePointStatus(res[i].id)} else {//重新提交}}//调用后端的接口提交数据}, res => {console.log(JSON.stringify(res))console.log(res.length)})},submitData() {let val = true;// setTimeout(()=>{// },1000)return val},updatePointStatus(curId) {// 切换至有网络后,提交成功后,更新已提交成功数据 更新巡检点状态  //修改flag = 1  - true ;  var updateSQL = `UPDATE ${constant.Submit.fieldName} SET  flag = 'true' WHERE  id = ${curId}`executeSQL(constant.dbName, updateSQL)},//打开数据库isOpenDB() {var isOpen = validDBOpen(constant.dbName)console.log("数据库是否打开:" + !isOpen);if (!isOpen) {console.log('unopen:' + isOpen)createDB(constant.dbName).then((res) => {console.log(res)}, (error) => {console.log(error)})}},deleteTable() {let sql = "drop table if exists Test";executeSQL(constant.dbName, sql)},queryTable() {let sql = "show tables";executeSQL(constant.dbName, sql)},//打开数据库chuangjian() {// createDB(constant.dbName)// console.log(constant.dbName)createDB(constant.dbName).then((res) => {}, (error) => {})},//修改数据updateData() {// Update 语句用于修改表中的数据。// UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 (更新某一行中的一个列)// 将id等于2的人的年龄修改为12 // var sql = `UPDATE ${constant.Test.fieldName} SET  age = 12 WHERE  id = 2`// 更新某一行中的若干列// 我们会修改地址(address),并添加城市名称(city):// UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'// WHERE LastName = 'Wilson'var sql = `UPDATE ${constant.Test.fieldName} SET  age = 3, name = 'lili' WHERE  id = 2`console.log(sql)executeSQL(constant.dbName, sql)},//插入数据insertData() {// INSERT INTO 表名称 VALUES (值1, 值2,....)createTable(constant.dbName, constant.Submit.fieldName, constant.Submit.fieldHeader, constant.Submit.fieldType)deleteSqlState(constant.dbName, constant.Submit.fieldName)let obj ={"id":"6714724409665388544","merchantId":"6659366380980142080","merchantCode":"6103260000","groupId":"6714724234423173120","community":"人大测试","number":"xianxiangmu2","address":"星光大道","buildArea":"0","floorArea":'',"greenArea":'',"intro":'',"picture":'',"remove":false,"createDate":"2020-11-12 10:34:32","accountType":false,"operatorId":'6659366380980142080',"remark":'',"group":'',"operatorName":'',"groupPhone":'',"flag":0}// insertSqlState(name, databaseName, tableField, saveData)insertSqlState(constant.dbName, constant.Submit.fieldName, constant.Submit.fieldHeader,obj)// var sql = `INSERT INTO ${constant.Test.fieldName} VALUES (${obj.id}, ${obj.age }, '${obj.name}')`// var sql = `INSERT INTO ${constant.Submit.fieldName} VALUES (${obj.id}, ${obj.age }, '${obj.name}','${obj.flag}')`// // var sql = `INSERT INTO ${constant.Test.fieldName} VALUES (5,18,'sfdsfd')`// console.log(sql)// executeSQL(constant.dbName, sql)// insertSqlState(constant.dbName, constant.Test.fieldName, constant.Test.fieldHeader, this.ceshishuju)},deleteData() {// DELETE 语句用于删除表中的行。// DELETE FROM 表名称 WHERE 列名称 = 值// 删除所有行// DELETE FROM table_name// var sql = `DELETE FROM ${constant.Test.fieldName} WHERE id = '1'`var sql = `DELETE FROM  ${constant.Test.fieldName}`console.log(sql)executeSQL(constant.dbName, sql)},//操作数据operateData() {//查询固定数量的数据//sqlite不支持top 使用select * from aa order by ids desc LIMIT 2// SELECT Company, OrderNumber FROM Orders ORDER BY Company// 例:select * from table where name='Xiao ming' order by id limit 0,5;// 意思为查找table表里,字段name为Xiao ming的记录 根据字段id显示0到5条记录;// 当然还有需求更为严格的:// 例:select * from table where name='Xiao ming' order by date desc,id limit 0,5;// 这条语句的意思为根据条件找到的0到5条记录然后根据字段date 去倒序排列;//  例:select * from table order by id desc limit 0,5;// 意思为根据id 找到0-5条记录并倒序排列:// (1)var sql =`SELECT * FROM  ${constant.Test.fieldName} LIMIT 2`  //按顺序查询返回// (2)从第三位开始提取 3 个记录(意思是前两个不算,实现分页查询)  SELECT * FROM 表名 LIMIT (当前需要查询的数量)3 OFFSET  (查询起始位置)2// var sql =`SELECT * FROM ${constant.Test.fieldName} LIMIT 2 OFFSET 1`// (3) ORDER BY SALARY ASC(升序)  ORDER BY NAME DESC(降序)// var sql=`select * from ${constant.Test.fieldName} order by id desc LIMIT 2 OFFSET 0`//SQLite 的 DISTINCT 关键字与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。// (1)SELECT DISTINCT column1, column2,.....columnN FROM table_name WHERE [condition]// let condition=// var sql=`SELECT DISTINCT name FROM ${constant.Test.fieldName}`// LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。(实现模糊查询)// SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern// var sql=`SELECT * FROM ${constant.Test.fieldName} WHERE name LIKE '%王%' `// var sql=`SELECT * FROM ${constant.Test.fieldName} WHERE name NOT LIKE '%王%' `// var sql=`SELECT * FROM ${constant.Test.fieldName} WHERE name  LIKE '%王' `// var sql=`SELECT * FROM ${constant.Test.fieldName} WHERE name  LIKE '王%' `var sql = `SELECT * FROM ${constant.Test.fieldName} WHERE  name  LIKE '%[峰]%' `console.log(sql)selectSQL(constant.dbName, sql).then(res => {console.log(res)console.log(res.length)}, res => {console.log(JSON.stringify(res))console.log(res.length)})},//检查数据库是否打开,返回booleanjiancha() {console.log(validDBOpen(constant.dbName))},//关闭数据库guanbi() {closeDB(constant.dbName)},//数据库开启事务  begin(开始事务)、commit(提交)、rollback(回滚)kaishi() {transactionDB(constant.dbName, "begin")},//执行增加操作xieru() {createTable(constant.dbName, constant.Test.fieldName, constant.Test.fieldHeader, constant.Test.fieldType)deleteSqlState(constant.dbName, constant.Test.fieldName)insertSqlState(constant.dbName, constant.Test.fieldName, constant.Test.fieldHeader, this.test)},//查询chaxun() {// var sql=checkSqlState(["*"], constant.Test.fieldName, "id=1")// var sql = checkSqlState(["*"], constant.Test.fieldName)// var sql = checkSqlState(["*"], 'projectTest')// var sql = checkSqlState(["*"],constant.Test.fieldName)// let condition =" name = 'wangdan'" //查询name为王丹的人// let condition =" id = '3'" //查询id// select用于查询数据//update用于// SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')// AND LastName='Carter'// let condition =" id = '1'  or   age = '4'" // let condition =" id = '1'  And   age = '4'"  // ORDER BY 语句用于对结果集进行排序。// INSERT INTO 语句// INSERT INTO 表名称 VALUES (值1, 值2,....)// var sql = checkSqlState(['*'], constant.Test.fieldName,condition )console.log("sfdsf")var sql = `SELECT * FROM  ${constant.Test.fieldName}`console.log(sql)selectSQL(constant.dbName, sql).then(res => {console.log(res)console.log(res.length)}, res => {console.log(JSON.stringify(res))console.log(res.length)})},//执行删除操作shanchu() {createTable(constant.dbName, constant.Test.fieldName, constant.Test.fieldHeader, constant.Test.fieldType)deleteSqlState(constant.dbName, constant.Test.fieldName)},//修改xiugai() {createTable(constant.dbName, constant.Test.fieldName, constant.Test.fieldHeader, constant.Test.fieldType)updateSqlState(constant.dbName, constant.Test.fieldName, "name='才华',age=10", "id=1")}}}
</script>
<style>
</style>

sqlite在H5中封装及使用(笔记)相关推荐

  1. Vue学习笔记:Vue中封装自定义步骤条 实现上下一步

    Vue中封装自定义步骤条 实现上下一步 效果图: 如上图:在VUE中实现效果,VUE+Element,ant都有封装好的UI,直接引用就好了: 这里,觉得样式不符合UI设计,所以自定义封装了一个步骤条 ...

  2. React学习:ref调用、组件封装调用-学习笔记

    文章目录 React学习:ref调用.组件封装调用-学习笔记 ref调用-string形式 ref调用-回调形式(官方推荐) ref调用-父调子 组件封装调用demo(全选) demo1(单组件) d ...

  3. 前端:uniapp封装组件用法笔记

    大家在做前端项目开发的时候,经常会遇到公用的一些页面,比如搜索.列表.商品详情卡片.评论列表等.为了提高开发效率.使代码看起来更加简洁,这个时候封装相应的组件是最好的解决方案.今天小编给大家介绍一下如 ...

  4. 在 Yii框架中使用session 的笔记:

    在 Yii框架中使用session 的笔记: 首先,在Yii框架中,你不需要像标准PHP代码那样使用session_start(), 在Yii框架中,autoStart 属性缺省被设置为true,所以 ...

  5. DELPHI 中的自定义类笔记(一) OBJECT 创建类 不用 CREATE 【转】

    原文:http://www.cnblogs.com/delphi-xe5/articles/3884154.html Delphi 中的自定义类笔记(一) 类的声明 有两种声明办法 一.自定义类的父类 ...

  6. 我的Android进阶之旅------gt;Android中编解码学习笔记

    编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...

  7. H5直播站点运维笔记一 服务器篇

    H5直播站点运维笔记一 服务器 服务器篇 一.CentOS6基础操作 1. 查看服务器版本 2. 查看服务器性能 3. 文件查找 4. 软件查找 5. 用户系统 6. 远程登录工具 二.FTP ( V ...

  8. PyTorch中文文档阅读笔记-day1

    写在开头(重复的) 1.课程来源:torch中文教程1.7版. torch中文文档. 2.笔记目的:个人学习+增强记忆+方便回顾 3.时间:2021年4月29日 4.仅作为个人笔记,如有需要请务必按照 ...

  9. swift禁用webView对H5中数字,链接,日期,地址,电话号码做解析

    showWebView.dataDetectorTypes = .None //swift禁用webView对H5中数字,链接,日期,地址,电话号码做解析 其UIDataDetectorTypes属性 ...

最新文章

  1. python重复执行_python flask schedule重复运行 任务被重复执行问题 解决方案
  2. Java三大特性之封装
  3. 奖学金pascal程序
  4. 【JS】使用变量作为object的key-方法汇总
  5. 从关系型数据库到非关系型数据库
  6. VB数组快速排序算法
  7. 修剪花卉(codevs 1794)
  8. vscode:设置语言为中文
  9. Missing artifact com.oracle:ojdbc7:jar:12.1.0.1. 配置maven.pom.xml,ojdbc.jar包出错
  10. 小米笔记本linux双系统安装,小米笔记本电脑系统安装教程
  11. 虚拟串口模拟器和串口调试助手使用教程
  12. Windows10系统 无法更换锁屏图片一直转圈圈(含替换系统默认锁屏壁纸教程)异常处理
  13. word中怎么加脚注不分栏_如何在Microsoft Word 2010中使用脚注
  14. Windows下定时运行程序
  15. C#控制键盘按键的常用方法
  16. 纯前端实现 App Store 卡片展开效果
  17. cad镜像后标注尺寸数字反了_CAD中镜像文字后,文字反转了,可以这样轻松调整过来...
  18. 分布式与微服务——Iaas,Paas和Saas、单体应用和缺点、微服务概念、传统 分布式 SOA 架构与微服务架构的区别、微服务实战、什么是RPC、CAP定理和BASE理论、唯一ID生成、实现分布式
  19. ALG 求单峰的位置
  20. 视频号运营指南百科书,新手必备干货丨国仁网络

热门文章

  1. 软件性能测试方案模板,性能测试方案(计划)模板
  2. 心态决定命运(别让心态毁了你自己)
  3. 解决win11笔记本桌面图标距离过大问题
  4. security认证考试多少钱_Security考试经历
  5. L1-018 大笨钟(Python3)
  6. 动手学深度学习-12 循环神经网络基础
  7. [ASP.NET]如何把Popup特性从宝玉的论坛代码中拆分出来呢?
  8. pip install lanms==1.0.2 g++: error解决方案
  9. 机器学习实战之路 —— 4 Boosting算法
  10. Bagging与Boosting算法的原理与区别,Boosting算法之一Adaboost原理与代码实现