• UniAPP 利用sqlite保存数据


    背景:利用uniapp开发一个APP,APP需要在断网的情况下,临时保存数据,把数据保存在uniapp的sqlite里面,这样可以随时的取到所保持的数据。

    1.在uniapp的工程中需要添加sqlite数据库,如下图

     

    2.在uniapp的共同组件中添加下面文件。

    function openComDB(name, path, callback) {
    
    	plus.sqlite.openDatabase({
    		name: name,
    		path: path,
    		success: function(e) {
    			// plus.nativeUI.alert('打开数据库成功');  
    			callback(e)
    		},
    		fail: function(e) {
    			// plus.nativeUI.alert("打开数据库失败");  
    			callback(e);
    		}
    	})
    }
    
    function executeSQL(name, sql, callback) {
    
    	plus.sqlite.selectSql({
    		name: name,
    		sql: sql,
    		success: function(e) {
    			// console.log("查询数据库:" + name + ",表:" + sql + ";的");  
    			console.log("查询数据库:"+JSON.stringify(e));  
    			callback(e);
    		},
    		fail: function(e) {
    			console.log("查询数据库失败:" + JSON.stringify(e));
    			callback(e);
    		}
    	})
    }
    
    function closeComDB(name, path, callback) {
    
    	plus.sqlite.closeDatabase({
    		name: name,
    		path: path,
    		success: function(e) {
    			// plus.nativeUI.alert('打开数据库成功');  
    			callback(e)
    		},
    		fail: function(e) {
    			// plus.nativeUI.alert("打开数据库失败");  
    			callback(e);
    		}
    	})
    }
    
    
    export {
    	openComDB,
    	closeComDB,
    	executeSQL
    }
    

    3.在需要调用sqlite的画面中,调用上面的方法

    注:需要用真机模拟的形式来进行运行,否则会出现错误

    	import {
    		openComDB,
    		executeSQL,
    		dropSQL
    	} from '@/common/sqlite.js'
    
    
    
    export default {
    		
    		data() {
    			return {
    				
    			}
    		},
    		onLoad: function(option) {
    			
    			this.isOpenDB();
    		},
    		methods: {
    			isOpenDB: function() {
    				console.log('是否打开数据库');
    				var isOpen = plus.sqlite.isOpenDatabase({
    					name: getApp().globalData.dbName, //数据库的名字  
    					path: getApp().globalData.dbPath //地址  
    				});
    				console.log(!isOpen);
    
    				if (!isOpen) {
    					console.log('Unoepned:' + isOpen);
    					// plus.nativeUI.alert('Unopened!');  
    					this.openDB(); //打開DB  
    				} else {
    					// plus.nativeUI.alert('Opened!');  
    					// this.isNet();  
    					// this.getLocalType();  
    					this.dbInit();
    				}
    			},
    
    			openDB: function() {
    				//SQLite      
    				openComDB(getApp().globalData.dbName, getApp().globalData.dbPath, res => {
    					console.log('打开数据库');
    					this.dbInit();
    
    				});
    			},
    
    			dbInit: function() {
    				//创建建筑物类型表;
    				var sqlTable = 'create table if not exists buildTable("id" INT(10) NOT NULL UNIQUE,"name" CHAR,"gridCode" CHAR)'
    
    				executeSQL(getApp().globalData.dbName, sqlTable, res => {
    					console.log('表创建成功:' + res);
    
    					var sqlInsert = "insert into buildTable values('";
    					sqlInsert += 10 + "','";
    					sqlInsert += "XXX1" + "','";
    					sqlInsert += "00001" + "'";
    					sqlInsert += ')';
    					executeSQL(getApp().globalData.dbName, sqlInsert, res => {})
    					
    					sqlInsert = "insert into buildTable values('";
    					sqlInsert += 11 + "','";
    					sqlInsert += "XXX2" + "','";
    					sqlInsert += "00002" + "'";
    					sqlInsert += ')';
    					executeSQL(getApp().globalData.dbName, sqlInsert, res => {})
    					
    					executeSQL(getApp().globalData.dbName, 'select * from buildTable', res => {
    						console.log("建筑物查询结果:" + JSON.stringify(res));
    					})
    				})
    			}
        }
    }
    

      

    4.上面的添加之后,需要用安卓原生进行打包。

    下载SDK:https://nativesupport.dcloud.net.cn/AppDocs/download/android

    找到文件夹:Android-SDK@3.2.9.81057_20210927SDKlibssqlite-release.aar 放到安卓原生的工程里面

    添加可以引用上面的sqlite的包即可如下图

     

     

     

    经试验,打包之后可以使用sqlite的

     参考资料:

    https://www.html5plus.org/doc/zh_cn/sqlite.html#plus.sqlite.transaction

    https://www.freesion.com/article/42581053845/

    https://uniapp.dcloud.io/api/storage/storage?id=clearstoragesync

  • 相关阅读:
    jquery实现回车键执行ajax
    php post请求
    题解 P2825 【[HEOI2016/TJOI2016]游戏】
    莫队
    一些关于数学的知识(总结)
    P3232[HNOI2013]游走
    万物生长 / Tribles
    [BZOJ4244]邮戳拉力赛
    P1095 守望者的逃离
    P3953 逛公园
  • 原文地址:https://www.cnblogs.com/killclock048/p/15432264.html
Copyright © 2020-2023  润新知