ionic1 sqlite的添加使用
Posted luffyc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ionic1 sqlite的添加使用相关的知识,希望对你有一定的参考价值。
开始使用这个存储方式的原因是 之前用的Local Storage 存储在ios设备上 当内存达到一定程度时 ios会自动清除app的一部分存储 所以之前存的东西可能会被清除 达不到想要的功能效果 决定用sqlite
先来一个中文版官方文档: http://www.runoob.com/sqlite/sqlite-tutorial.html (太多太乱 不想看下去)
参考别人博客链接:https://yq.aliyun.com/articles/69473 (使用方法很清楚 数据的添加、删除、查找 但其中一些讲解不清楚 有的也有问题 不同的观点我下面会说清楚 具体第三点)
1.添加插件
cordova plugin add https://github.com/brodysoft/Cordova-SQLitePlugin.git
2.添加依赖 引入插件
在js中添加ngCordova依赖 angular.module(‘myApp‘, [‘ngCordova‘])
在index.html里面引入js文件 <script src="lib/ngCordova/dist/ng-cordova.js"></script>
3.平台就绪后创建数据库
不要忘记注入 $cordovaSQLite
name是数据库的名称 注意一定要加上 location:1 这个很关键 没有这个数据库创建不成功 之前没加找了很多地方才发现这个问题
还有一点 ionic server 很多人都说浏览器不支持 其实是可以的 按照下面的方法判断之后再创建数据库 都是可用的
$ionicPlatform.ready(function() {
//创建数据库
if (window.cordova) {
$rootScope.db = $cordovaSQLite.openDB({
name: "my.db",
location: 1
}); //device
} else {
$rootScope.db = window.openDatabase("my.db", ‘1‘, ‘my‘, 1024 * 1024 * 100); // browser
}
//创建表
$cordovaSQLite.execute($rootScope.db, "CREATE TABLE IF NOT EXISTS appStepTime (edition text)");
});
我这里把数据库作为一个全局变量了 因为我其他地方要用到做判断 要是只在这个js文件做处理的话可以定义成一个局部变量
创建表的时候 我这里 appStepTime 是我的表的名字 里面只储存了一个字段 edition 类型是 text 如果需要创建多个字段 如下代码 : "CREATE TABLE IF NOT EXISTS people (id integer primary key, firstname text, lastname text)"
4.数据库查询数据 插入数据
我这里做的判断是如果数据库没有这个字段就插入这个字段 并没有对字段的值进行判断 如果有需要可以参考上面那个链接
//数据库查询数据
$cordovaSQLite.execute($rootScope.db, "SELECT edition FROM appStepTime").then(function(res) {
if (res.rows.length > 0) {
//有数据的话作出相应的处理
} else {
//alert("No results found");没有数据作处理
//数据库插入数据
$cordovaSQLite.execute($rootScope.db, "INSERT INTO appStepTime(edition) VALUES (?)", [$rootScope.editionNum]).then(function(res) {
//alert("INSERT ID -> " + res.insertId);
}, function(err) {
//alert(err);
});
}
}, function(err) {
//alert(err);
});
如果学过数据库的朋友应该很清楚 查询是 select 插入是 insert 删除是 delete (我大学学过 但是仅限于皮毛)
5.删除数据库
本人未做过数据删除 所以具体删除数据的方法可以参考官方文档: http://www.runoob.com/sqlite/sqlite-delete.html
删除数据库方法:$cordovaSQLite.deleteDB("my.db");
以上是关于ionic1 sqlite的添加使用的主要内容,如果未能解决你的问题,请参考以下文章
如果我想从另一个片段中添加书签,为啥我的书签单词没有保存到 sqlite 数据库?
我无法在 cordova-sqlite-storage 中为 ionic 1 打开数据库