gpt4 book ai didi

javascript - executeSql 可以带命名参数吗?

转载 作者:太空宇宙 更新时间:2023-11-04 15:15:27 25 4
gpt4 key购买 nike

我在 examples 中看到当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 可以带命名参数吗?

最佳答案

来自same page :

On November 18, 2010, the W3C announced that Web SQL database is a deprecated specification. This is a recommendation for web developers to no longer use the technology as effectively the spec will receive no new updates and browser vendors aren't encouraged to support this technology.

另请参阅 http://www.w3.org/TR/webdatabase 处的大警告

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

另一个在黑暗中拍摄的是尝试使用 :foo 作为占位符。据我所知,大多数浏览器都使用(d)SQLite 作为他们的网络数据库实现,并且从我的头顶 having looked it up , SQLite 支持:parametername-form 几种形式的命名参数。不知道你实际上会如何提供值,尽管我想象像 [{'foo': 'bar'}, {'baz': 'bat'}]


编辑
我在 your example 上尝试了很多排列像这样:

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

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

或者:

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

...以及 Chrome 25 中的更多功能;它们似乎都没有表示支持命名参数。我所能做的就是将一个简单的 n 位置值映射到 n 参数位置(或者索引,如果你愿意的话)。

我并不是说绝对没有办法,也许我只是找不到它或猜不到正确的使用方法,但我认为你运气不好。并且,再次 as mentioned in the comments ,即使应该我或其他人让它工作我也不会依赖它(因为:undocumented,以及无论如何都已弃用)并且它可能会在许多(大多数?)其他方面失败浏览器。老实说:试图让它发挥作用是在浪费你的时间。

关于javascript - executeSql 可以带命名参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15644654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com