无法从phone sql应用程序中的web sql数据库检索数据
问题描述:
我正在研究需要存储一些数据的iOS上的phonegap应用程序。我正在使用phonegap文档中给出的存储API,并且我相信正在插入数据。但是当我试图使用SELECT语句检索数据时,我没有在警报框中获得任何输出。无法从phone sql应用程序中的web sql数据库检索数据
显示“loading2”警报,但之后我没有得到任何输出。
我的代码如下(从PhoneGap的维基拾起):
// load the currently selected icons
function loadCelebs(mydb)
{
try
{
alert("loading2");
mydb.transaction(
function(transaction)
{
transaction.executeSql('SELECT * FROM celebs ORDER BY name', [], celebsDataHandler(transaction,results));
});
}
catch(e)
{
alert(e.message);
}
}
// callback function to retrieve the data from the prefs table
function celebsDataHandler(tx, results)
{
// Handle the results
alert(results);
}
答
尝试将其更改为:
mydb.transaction(
function(transaction)
{
transaction.executeSql('SELECT * FROM celebs ORDER BY name', [], celebsDataHandler);
});
你不希望在与(TX,结果)的一部分transaction()调用。您只传递对回调处理程序的引用,以便它可以在完成时运行它。通过添加(tx,结果)您正在执行并传递结果。
另外,考虑传入错误处理程序。如果您知道错误是什么,它可以使调试更容易。
function errorCB(err) {
alert("Error processing SQL: "+err.code);
}
mydb.transaction(
function(transaction)
{
transaction.executeSql('SELECT * FROM celebs ORDER BY name', errorCB, celebsDataHandler);
}
);
+0
是的,我正在处理错误的处理程序。保持处理程序名称始终为我工作。所以我使用“事务”作为处理程序的名称,而不是使用“事务”有时和“其他时间”使用“TX”。我认为处理程序可以只有一个名称,不同于范围变量。 – ilight
“没有得到任何输出”?这是否意味着你没有得到一个警戒框?或者你得到一个没有内容的改变框? –
感谢Joachim,我错误地命名了处理程序。由于我认为不同的处理程序名称,该部分未被执行。它可能在概念上是如此,但它对我有用。所以现在,我会一起去。感谢您的回复,虽然:) – ilight