<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'exportdefault{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()]returnnewPromise((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()// 获取离线数据 }elseif(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>