SQLite插件Cordova基本代码

时间:2016-02-05 13:29:22

标签: javascript sqlite cordova visual-studio-2015 cordova-plugins

我是Cordova& amp;的新手。 Sqlite,但我写了一些代码,我无法弄清楚它有什么问题?有什么建议? 我总是从Javascript调试器获得以下输出:

Click to see error messages

 <script type="text/javascript">
    // Wait for Cordova to load
    document.addEventListener('deviceready', onDeviceReady, false);
    var output = document.getElementById('outputField');

    // Cordova is ready
    function onDeviceReady() {
        window.sqlitePlugin.openDatabase({ name: 'test.db', location: 2 }, function (db) {
            output.innerHTML += '</br> - Database created/opened';

            db.transaction(function (tx) {
                tx.executeSql(tx, "CREATE TABLE  localStorage2 IF NOT EXISTS (key UNIQUE, value)");
            });


            output.innerHTML += '</br> - Table localStorage2 Created';

            storeValue(db, 'localStorage2', 'testKey', 'testValue');
            output.innerHTML += '</br> - Insert dummy value';

            output.innerHTML += '</br> ' + readValue(db, 'localStorage2', 'testKey');
        });
    }


    function storeValue(db, table, key, value) {
        db.transaction(function (tx) {
            tx.executeSql(tx, 'INSERT INTO ' + table + ' (key,value) VALUES ("' + key + '","' + value + '")');
        });

    }

    function readValue(db, table, key) {
        db.transaction(function (tx) {
            return db.executeSql(tx, 'SELECT * FROM ' + table + ' WHERE key="' + key + '"');
        });
    }
</script>

1 个答案:

答案 0 :(得分:0)

如果你正在测试一个新的插件,库,......无论如何,最好的方法是阅读文档,玩一些示例并逐步扩展它以满足您的需求。

SQLite插件是事件驱动的,这意味着您必须等到作业完成。

你这样做,工作:

<p><strong>Hello World</strong></p>

正确的方法是:

var the_result = mySQL_Job();

function mySQL_Job(){
   db.readTransaction(function(tx) {   
      return db.executeSql(…);
   });
}

您必须为每个sql作业执行此操作,请参阅以下文档:https://github.com/litehelpers/Cordova-sqlite-storage

如果你有很多疑问,那么使用promises是个好主意:How to compact SQL instructions in Cordova?