如何连接到phonegap中的现有sqlite数据库

时间:2015-06-04 20:24:31

标签: phonegap-build

我使用phonegap创建一个Android应用程序。 我做了这些步骤: 1.写了html,css和jquery移动代码。 2.包括phonegap.js。 3.通过sqlite manager firefox扩展创建数据库并复制到项目目录的根目录(在index.html旁边)。 4.使用此代码:

<script>
    $(function() {
        onDeviceReady();
        queryDB();
        $("#links").niceScroll();
    });
</script>
<script type="text/javascript" charset="utf-8">
    document.addEventListener("deviceready", onDeviceReady, false);
    function onDeviceReady()
    {
        var db = window.openDatabase("shia.sqlite", "1.0", "shia", 100000);
    }

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

    function querySuccess(tx, results) {
        console.log("Returned rows = " + results.rows.length);
        // this will be true since it was a select statement and so rowsAffected was 0
        if (!results.rowsAffected) {
            console.log('No rows affected!');
            return false;
        }
        // for an insert statement, this property will return the ID of the last inserted row
        console.log("Last inserted row ID = " + results.insertId);
    }

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

此错误显示在控制台中:

  

未捕获的TypeError:无法读取属性&#39; executeSql&#39;未定义的

请帮帮我。

1 个答案:

答案 0 :(得分:1)

@Behzad, 你的代码有函数

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

但是,当您拨打queryDB时,您没有通过句柄。所以在这个函数中,参数tx为null,因为你没有传递句柄。