如何在SQLite中只选择一个项目? (localStorage的)

时间:2012-09-04 04:58:03

标签: javascript html5 sqlite cordova

我试图通过更具体的SQL查询来改进我的代码:

以下代码有效,我可以使用结果。但可能效率不高:

function queryDB(tx) {
    tx.executeSql('SELECT * FROM foo', [], querySuccess);
}

function querySuccess(tx, results) {
    console.log(results.rows.item(0).name);
}

OUTPUT: JOHN

所以,当我尝试:

function queryDB(tx) {
    tx.executeSql('SELECT id FROM foo WHERE id = 1', [], querySuccess);
}

function querySuccess(tx, results) {
    console.log(results.rows.item(0).name);
}

OUTPUT: undefined 

我尝试在查询和数组上使用不同的数字,但没有任何作用。我认为查询错误。

谢谢!

2 个答案:

答案 0 :(得分:1)

LIMIT 1添加到您的查询中。这是一个例子:

SELECT * FROM foo LIMIT 1

答案 1 :(得分:1)

嗯,首先,你一行ID是1吗?

其次,由于您只是在第二个陈述中选择id列,为什么您认为自己能够访问name

第三,将查询限制在没有order by子句的第一行是没有意义的。 SQL可以在没有该子句的情况下以任何顺序返回行。

如果您真的想要表格中第一个ID的名称,请执行以下操作:

select name from foo order by id limit 1

应该做的伎俩。执行select *时很少有用例。

如果您想要第四行,请使用以下内容:

select name from foo order by id limit 1 offset 3

有关详细信息,请参阅here