4

我试图通过更具体的 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 

我尝试在查询和数组上使用不同的数字,但没有任何效果。我假设查询是错误的。

谢谢!

4

2 回答 2

3

那么,首先你有没有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

有关更多详细信息,请参见此处

于 2012-09-04T05:01:56.593 回答
2

添加LIMIT 1到您的查询。这是示例:

SELECT * FROM foo LIMIT 1
于 2012-09-04T05:00:39.890 回答