【问题标题】:Why I cannot use cordova-sqlite-storage?为什么我不能使用cordova-sqlite-storage?
【发布时间】:2015-12-12 11:08:36
【问题描述】:

我正在编写一个 android 应用程序,我正在使用 phonegap 和 weinre 进行调试。

一些信息:

$ phonegap -v
5.3.9
$ cordova plugin list
cordova-plugin-whitelist 1.2.0 "Whitelist"
cordova-sqlite-storage 0.7.14 "Cordova sqlite storage plugin"

插件已安装,但是当我使用 phonegap 运行它并在手机中打开它时,控制台中没有显示任何内容。没有错误,什么都没有。窗口对象打印在控制台中,但不是其他所有内容。

我使用的是phonegap的默认配置,谁能告诉我为什么会这样?

这是我在 js 脚本中编写的代码。

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady(event) {                              

    console.log(window);                                     
    //var db = window.sqlitePlugin.openDatabase({name: "my.db"});
    //var openDatabase = sqlitePlugin.openDatabase;          
    console.log(window.sqlitePlugin);                        
    console.log(window.sqlitePlugin.openDatabase);           

    var db = window.sqlitePlugin.openDatabase({name: "test.db"},
        function(db) {                                       
            console.log('db open succeeded');                
        },                                                   
        function(err) {                                      
            console.log('Open database ERROR: ' + JSON.stringify(err));
        }                                                    
    );                                                       

    db.executeSql("create table tmp 'column1' INT;", [], function (res) {
        console.log('got stringlength: ' + res.rows.item(0).stringlength);
    }, function(error) {                                     
        console.log('SELECT error: ' + error.message);       
    });                                                      

    db.executeSql("SELECT LENGTH('tenletters') AS stringlength", [], function (res) {
        console.log('got stringlength: ' + res.rows.item(0).stringlength);
    }, function(error) {                                     
        console.log('SELECT error: ' + error.message);       
    });                                                      
}                                                            

【问题讨论】:

标签: javascript android sqlite cordova weinre


【解决方案1】:

我建议不要使用 weinre,除非你真的必须这样做。某些设备的内置替代品,此处列出:http://people.apache.org/~pmuellr/weinre/docs/latest/

【讨论】:

    【解决方案2】:

    您好,请在您的 onDeviceReady() 中执行类似操作。 也许它无法与 sqllite db 一起使用。

    onDeviceReady: function() {
            app.receivedEvent('deviceready');
              if(window.sqlitePlugin !== undefined) {
                console.log('opening sqlite DB ');
                db = window.sqlitePlugin.openDatabase("ECM_MOBILE");
            } else {
                console.log('opening Web SQL DB ');
                db = window.openDatabase("ECM_MOBILE", "1.0", "Cordova Demo", 200000);
            }   
    
        }
    

    如果 sqlite 没有正确安装,则需要修复 sqlite db 的安装。

    【讨论】:

      【解决方案3】:

      在较新版本的 SQLite 插件位置必须在打开数据库时设置:

      var db = window.sqlitePlugin.openDatabase({name: "my.db", location: "default"}); 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-30
        • 2018-03-17
        • 2020-02-10
        • 1970-01-01
        • 2016-08-03
        • 2023-03-17
        • 2021-03-15
        • 2016-11-02
        相关资源
        最近更新 更多