Невозможно получить данные из базы данных web sql в приложении phonegap - PullRequest
0 голосов
/ 26 сентября 2011

Я работаю над приложением phonegap на iOS, которое должно хранить некоторые данные.Я использую API хранилища, указанный в документах PhoneGap, и считаю, что данные вставляются.Но когда я пытаюсь получить данные с помощью инструкции SELECT, я не получаю никаких выводов в окнах оповещений.

отображается предупреждение «loading2», но после этого я не получаю никаких выводов.

Мой код, как показано ниже (взято из PhoneGap Wiki):

// 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);

    }

1 Ответ

0 голосов
/ 26 сентября 2011

Попробуйте изменить его на:

 mydb.transaction(
            function(transaction) 
            {
                transaction.executeSql('SELECT * FROM celebs ORDER BY name', [], celebsDataHandler);
            });

Вам не нужна часть (tx, results) в вызове транзакции (). Вы только передаете ссылку на обработчик обратного вызова, чтобы он мог запустить его, когда это будет сделано. Добавляя (tx, results), вы выполняете и передаете результат.

Также рассмотрите возможность передачи обработчика ошибок. Это может облегчить отладку, если вы знаете, что это за ошибки.

function errorCB(err) {
    alert("Error processing SQL: "+err.code);
}


mydb.transaction(
    function(transaction) 
    {
        transaction.executeSql('SELECT * FROM celebs ORDER BY name', errorCB, celebsDataHandler);
    }
);
...