使用 Android 版 PhoneGap:无法在数据库中创建表

Posted

技术标签:

【中文标题】使用 Android 版 PhoneGap:无法在数据库中创建表【英文标题】:Using PhoneGap for Android : Not able to create table in the database 【发布时间】:2013-05-24 17:32:39 【问题描述】:

BackGround :我是 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> 

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

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

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

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

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

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

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

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

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

P.S - 我正在模拟器上使用 Android 2.3。

谢谢 真棒

【问题讨论】:

这个问答你查过吗:***.com/questions/11775740/… 是的。我已经提到了。我将 cordova.jar 保存在 libs 文件夹中 【参考方案1】:

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

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

正在返回null

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

【讨论】:

【参考方案2】:

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

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

Creating SQLite Table from Android HTML Assets

是一个很好的链接,帮助很大。

【讨论】:

以上是关于使用 Android 版 PhoneGap:无法在数据库中创建表的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap 状态栏样式默认或回退 android 低于 6

使用 Phonegap 的 Android 应用程序的 iframe 无法正常工作

Phonegap 构建应用程序在 android 上无法正常工作

Phonegap/Cordova 无法下载到 Android 中的子文件夹

Phonegap 应用程序无法在某些 Android 设备中滚动

Phonegap TTS 插件 Android 无法正常工作