Javascript executeSql可以接受命名参数吗?

Javascript executeSql可以接受命名参数吗?,javascript,html,web-sql,Javascript,Html,Web Sql,我看到,当executeSql接受多个参数时,我们使用问号: db.transaction(function(tx){ var addedOn = new Date(); tx.executeSql("INSERT INTO todo(todo, added_on) VALUES (?,?)", [todoText, addedOn], html5rocks.webdb.onSuccess, html5rocks.webdb.onError); }); executeS

我看到,当executeSql接受多个参数时,我们使用问号:

db.transaction(function(tx){
var addedOn = new Date();
tx.executeSql("INSERT INTO todo(todo, added_on) VALUES (?,?)",
    [todoText, addedOn],
    html5rocks.webdb.onSuccess,
    html5rocks.webdb.onError);
});
executeSql
可以获取命名参数吗?

来自:

2010年11月18日,W3C宣布WebSQL数据库是一个不推荐使用的规范。这是一项建议,建议web开发人员不再使用该技术,因为规范不会收到新的更新,并且不鼓励浏览器供应商支持该技术

另请参见下面的大警告:

但要回答你的问题:据我所知:不。你可以写一个“包装器”,用实际值替换你自己的占位符,但我认为不值得费心

另一种在黑暗中拍摄的方式是尝试使用
:foo
作为占位符。AFAIK大多数浏览器使用(d)SQLite实现其webdatabase,从我的想法来看,SQLite支持
:parametername
-表单中的命名参数。我不知道您实际将如何提供值,尽管我想象类似于
[{'foo':'bar'},{'baz':'bat'}]


编辑
我尝试过许多类似的排列方式:

var p = {};
p.aa = todoText;
p.bb = addedOn;

tx.executeSql("INSERT INTO todo(todo, added_on) VALUES (:aa, :bb)",
    p,
    ...
});
或:

或:

或:

…还有更多的铬25;它们似乎都不表示支持命名参数。我所能做的就是将一个简单的
n
th位置值映射到
n
th参数位置(或索引,如果您愿意)


我不是说绝对没有办法,也许我就是找不到或者猜不出正确的使用方法,但我认为你运气不好。再说一次,即使我或其他人让它工作,我也不会依赖它(因为:,也不推荐使用),而且它可能会在许多(大多数?)其他浏览器中失败。老实说:试图让它发挥作用是在浪费你的时间。

为什么我觉得我周围的墙都塌下来了?但它说Safari(意思是iPad)不支持它呢?将它与之比较,并得出你自己的结论……我能够使用?1、?2、,?3但是我还没有弄清楚如何使用命名参数。哦,昨晚我在IndexedDB上看了一些视频。谢谢你给我指明了方向。伙计,我有很多工作要做。
tx.executeSql("INSERT INTO todo(todo, added_on) VALUES (:aa, :bb)",
    {"aa": todoText, "bb": addedOn},
    ...
});
tx.executeSql("INSERT INTO todo(todo, added_on) VALUES (@aa, @bb)",
    {"aa": todoText, "bb": addedOn},
    ...
});
tx.executeSql("INSERT INTO todo(todo, added_on) VALUES (?aa, ?bb)",
    {"aa": todoText, "bb": addedOn},
    ...
});