【问题标题】:WebSQL passing values in as parameterWebSQL 将值作为参数传入
【发布时间】:2014-05-07 22:12:28
【问题描述】:

我正在使用 Phonegap,我正在按照他们网站上的指南进行操作,但它为我提供了此功能。

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(err) {
    alert("Error processing SQL: "+err.code);
}

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

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

但是我如何将值作为参数传递呢?有可能做这样的事情吗?

function populateDB(tx, values) {
 tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
 tx.executeSql('INSERT INTO DEMO (id, data) VALUES (values['id'], values['data'])');
}

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

我看到可以使用问号,但我找不到明确的教程。

【问题讨论】:

  • 我的回答是否提供了解决方案?

标签: cordova web-sql


【解决方案1】:

我想这就是你所追求的 -

var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
var insertValues = {
    values1: [1, 'First row'],
    values2: [2, 'Second row']
};

doInserts(insertValues);

function doInserts(insertValues) {
    db.transaction(function(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 (?, ?)', 
            insertValues.values1,
            insertSuccess,
            insertFail
        );
        tx.executeSql(
            'INSERT INTO DEMO (id, data) VALUES (?, ?)',
            insertValues.values2,
            insertSuccess,
            insertFail
        );
    });
}

function insertSuccess() {
    console.log('insert success');
}

function insertFail(err) {
    console.log('insertFail, err.message: ' + err.message);
}

这些东西是异步的,所以如果你想知道你的所有插入何时完成,一个可行的技巧是 -

  1. 计算您期望执行的插入次数并将其存储在变量中。
  2. 当插入成功时,将存储预期插入次数的变量减 1。
  3. 当保存预期插入次数的变量为 0 时,您就知道所有插入都已完成。

【讨论】:

  • 这不是我想要的对不起。我的意思是在函数中传递值,如 populateDB(tx, values)
  • @SinanSamet 我更新了答案,如果这是你想要的,请告诉我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多