这是Chrome扩展程序,让我说我有这段代码:
var DB = openDatabase('CMPDB', '1.0', 'Database for CMP', 4 * 1024 * 1024);
LoadFromDB();
function LoadFromDB() {
DB.transaction( function(tx)
{
tx.executeSql('CREATE TABLE IF NOT EXISTS table(X, Y, Z UNIQUE)');
tx.executeSql('SELECT * FROM table', [], function (tx, results) {
var len = results.rows.length;
for (i = 0; i < len; i++) {
alert(results.rows.item(i).X.text);
alert(results.rows.item(i).Y.text);
alert(results.rows.item(i).Z.text);
}
});
});
}
为什么所有的警报都会以未定义的形式返回,假设该表已在之前创建,并且chrome上的Dev工具表示值在表中?
答案 0 :(得分:0)
我认为在表创建完成之前,您的SELECT
语句可能被称为。您是否尝试将SELECT
查询移动到回调函数,以便在运行CREATE TABLE
SQL之后将其称为。类似的东西:
tx.executeSql('CREATE TABLE IF NOT EXISTS table(X, Y, Z UNIQUE)', function(tx) {
tx.executeSql('SELECT * FROM table', [], function (tx, results) {
var len = results.rows.length;
for (i = 0; i < len; i++) {
console.log(results.rows.item(i).X.text);
console.log(results.rows.item(i).Y.text);
console.log(results.rows.item(i).Z.text);
}
});
});