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 打开数据库

导航抽屉片段 Sqlite

如何使用光标和循环显示来自 sqlite 的片段的 recyclerview

使用片段从数据库 SQLite 获取数据时出错

在片段中显示适当的 SQLite 数据(相同的条目出现在不同的选择条目中)