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);
  });

  

 

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM