WebSQL以as参数传递值 [英] WebSQL passing values in as parameter

查看:79
本文介绍了WebSQL以as参数传递值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用Phonegap,我在他们的网站上遵循指南,但它给我这个功能。

I am using Phonegap and I am following the guide on their site but it gives me this function.

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

但是我如何传递值作为参数呢?是否可以这样做?

But how would I pass values as a parameter in there? Is it possible to do something like this?

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

我看到可以使用问号,但我找不到一个清晰的教程

I saw that it is possible to work with question marks but I can't find a clear tutorial on it.

推荐答案

我认为这是你之后 -

I think this is what you're after -

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

这个东西是异步的,所以如果你想知道你的所有插入完成一个工作原理是 -

This stuff is asynchronous so if you want to know when all your inserts are finished one trick that works is to -


  1. 计算您希望执行的插入次数并将其存储在变量中。

  2. 插入成功时,对存储预期插入数的变量减1。

  3. 当保留插入数量的变量为0时,您的所有插入操作都已完成。

这篇关于WebSQL以as参数传递值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆