【问题标题】:PhoneGap storage, Passing Variables to db.transaction, SQL LitePhoneGap 存储,将变量传递给 db.transaction,SQLite
【发布时间】:2013-12-11 01:54:50
【问题描述】:

我正在使用 PhoneGap 开放式数据库 API。根据此文档,值应使用以下代码插入现有表中

function populateDB(tx) {
     tx.executeSql('DROP TABLE IF EXISTS DEMO');
     tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}

function errorCB(tx, err) {
    alert("Error processing SQL: "+err);
}

function successCB() {
    alert("success!");
}

  var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
  db.transaction(populateDB, errorCB, successCB);

这很好,但现在我试图将一个变量传递给 populateDB 函数。当我尝试下面的代码时

  var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
  db.transaction(populateDB("test variable"), errorCB, successCB);

“测试变量”字符串通过但 tx 未定义。有谁知道怎么做?

【问题讨论】:

    标签: ios sqlite cordova opendatabase


    【解决方案1】:

    我认为您可以做到这一点的唯一方法是编写一个函数,该函数返回一个使用传入值的函数。类似于:

    function makeMyDB(x) {
        var result = function() {
         tx.executeSql('DROP TABLE IF EXISTS DEMO');
         tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
         tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "'+x+'")');
        }
       return result;
    } 
    

    然后您可以尝试将 makeMyDB(x) 作为第一个参数传递。

    【讨论】:

      【解决方案2】:

      如果其他人仍在寻找解决此问题的方法,我有一个小解决方案,可以在不更改或丢失tx 的情况下传递变量,您只需编写以下示例:

      var myvar = 1; //an int or something else
      db.transaction(function(tx){
          selectQueryDB(tx,myvar);
          },errorCB);
      
      
      
      function selectQueryDB(tx,myvar){
          tx.executeSql('SELECT * FROM mytable WHERE myparam='+myvar, [], renderList, errorCB);
      
      }
      
      function errorCB(err){
          alert("Error Processing SQL: "+ err.code );
      }
      function renderList(tx,results){
      enter code here
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-15
        • 1970-01-01
        • 2015-02-20
        • 2012-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-20
        相关资源
        最近更新 更多