• cordova-sqlite-plugin常用数据库操作


    ionic项目需要做本地缓存,研究了一番,总结出了常用的数据库操作:

     1、新建数据库,用angularJS+ionic:

    //声明一个数据库对象
    var db = null;
    //事件deviceready就绪后创建数据库
    document.addEventListener('deviceready', function() {
      db = window.sqlitePlugin.openDatabase({name: 'demo.db', location: 'default'});
    });
    

     2、用标准事务API 来布库

    //在一个事务中执行建表插入等sql语句的
    db.transaction(function(tx) {
        //建表
        tx.executeSql('CREATE TABLE IF NOT EXISTS DemoTable (name, score)');
        //插入操作
        tx.executeSql('INSERT INTO DemoTable VALUES (?,?)', ['Alice', 101]);
        tx.executeSql('INSERT INTO DemoTable VALUES (?,?)', ['Betty', 202]);
      }, function(error) {//失败回调
        console.log('Transaction ERROR: ' + error.message);
      }, function() {//成功回调
        console.log('Populated database OK');
      });
    

     3、可以检测或查看数据的事务操作

    db.transaction(function(tx) {
        tx.executeSql('SELECT count(*) AS mycount FROM DemoTable', [], function(tx, rs) {//操作成功的回调函数里面 有 tx 参数和 rs 参数
          //可以打印查询成功的信息
          console.log('Record count (expected to be 2): ' + rs.rows.item(0).mycount);
        }, function(tx, error) {
          //打印查询失败的信息
          console.log('SELECT error: ' + error.message);
        });
      });
    

     4、这比较叼,SQL 批处理。用来初始化有大量数据的数据库比较实用

    db.sqlBatch([
        'CREATE TABLE IF NOT EXISTS DemoTable (name, score)',
        [ 'INSERT INTO DemoTable VALUES (?,?)', ['Alice', 101] ],
        [ 'INSERT INTO DemoTable VALUES (?,?)', ['Betty', 202] ],
      ], function() {
        console.log('Populated database OK');
      }, function(error) {
        console.log('SQL batch ERROR: ' + error.message);
      });
    

      如果对一个表执行多次操作可以用以下方法,用到jquery的方法

    var resultJSON = {/*json数据,待插入数据*/};
    var ph = '';//空字符,用于拼接
    var data = [];//待插入数据容器
    //拼接好sql字符串 填装好数据
    $each(resultJSON.user, function (index, element) {
      data.push(element.obj1);
      data.push(element.status = 0);
      if (index !== 0) { ph += ','};
      ph += '(?,?)';
    });
    //执行操作
    db.sqlBatch([
        ['INSERT INTO tableName(obj1,status) VALUES ' + ph, data];
      ]);
    

      5、要查看数据就在 操作成功的回调函数加一个res参数,打印log.当然你可以用这种方法返回查询结果

     db.executeSql('SELECT count(*) AS mycount FROM DemoTable', [], function(rs) {
        console.log('Record count (expected to be 2): ' + rs.rows.item(0).mycount);
      }, function(error) {
        console.log('SELECT SQL statement ERROR: ' + error.message);
      });
    

      

       

  • 相关阅读:
    QA的几个经典问题(1)
    QA的几个经典问题(2)
    通过Android录音进行简单音频分析
    Android在TextView中实现RichText风格
    Handler Should be static or leaks Occur?
    如何查看华为EMUI系统APK源码?
    ServiceManager: Permmission failure: android.permission.RECORD_AUDIO
    Android 4.4以上的存储读写权限
    如何使用Android中hide的类和方法进行开发?
    在Mac mini上编译Android源码
  • 原文地址:https://www.cnblogs.com/wjw-blog/p/5974539.html
Copyright © 2020-2023  润新知