2

背景:我是 PhoneGap 的新手,并尝试在 Android 上使用 HTML5 + PhoneGap 在 SQLite 中创建一个简单的表。

这是我的 HTML 代码。(使用 PhoneGap 网站的参考代码)

<html>
  <head>
    <title>Storage Example</title>

    <script type="text/javascript" charset="utf-8" src="cordova-2.7.0.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Wait for Cordova to load
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    // Cordova is ready


      function onDeviceReady() {


                navigator.notification.alert(
                        'Welcome to SQLLiteDemo',  // message
                        '',         // callback
                        'Hey -- Welcome123'             // title
                    );

        var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
        db.transaction(populateDB, errorCB, successCB);
    }

    // Populate the database 
    //
    function populateDB(tx) {
         tx.executeSql('DROP TABLE IF EXISTS DEMO');
         tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
         tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
         tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
    }

    // Transaction error callback
    //
    function errorCB(tx, err) {
        alert("Error processing SQL: "+err);
        console.log('It is failure'+err);
    }

    // Transaction success callback
    //
    function successCB() {
    console.log('It is success');
        alert("success!");
    }

    </script>
  </head>
  <body>
    <h1>Example</h1>
    <p>Database</p>
  </body>
</html> 

我无法看到创建表并在控制台上收到以下错误。

找不到从方法 org.apache.cordova.CordovaWebViewClient.getWhitelistResponse 引用的类 'android.webkit.WebResourceResponse'

TypeError:表达式“db”[null] 的结果不是对象。在文件:///android_asset/www/index.html:25

找不到从方法 org.apache.cordova.CordovaWebViewClient.getWhitelistResponse 引用的类 'android.webkit.WebResourceResponse'

TypeError:表达式“db”[null] 的结果不是对象。在文件:///android_asset/www/index.html:22

我不确定这个错误是什么“

找不到从方法 org.apache.cordova.CordovaWebViewClient.getWhitelistResponse 引用的类 'android.webkit.WebResourceResponse'

“想要传达。我没有更改我的 config.xml,也没有在白名单条目中添加任何条目,因为我没有与任何远程 url 交谈。不确定这个错误是否可以忽略?:(

我可以看到使用cordova的警报框,因此与cordova集成没有任何问题,但发生了一些奇怪的事情。请帮忙

PS - 我在模拟器上使用 Android 2.3。

谢谢 Gendaful

4

2 回答 2

2

我可能不在基地,但它似乎window.openDatabase实际上是浏览器的 HTML 5 功能。它看起来像你的代码:

var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);

正在回归null

在您的 Android 2.3 模拟器中,启动设备的 Web 浏览器并转到http://html5test.com/,查看 Web SQL 数据库是否显示为受支持。

于 2013-05-24T19:07:09.077 回答
0

我得到了解决方案,并将其发布在这里。

实际上,数据库正在创建并位于“/data/data/package_name/”文件夹下。我在“/data/data//databases”文件夹下搜索它,这就是我无法看到创建表的原因。

从 Android HTML 资产创建 SQLite 表

是一个很好的链接,并帮助了很多。

于 2013-05-24T19:18:17.480 回答