0

我是新來的科爾多瓦& Sqlite,但我寫了一些代碼,我無法弄清楚它有什麼問題嗎?有什麼建議麼? 我總是從JavaScript調試器的輸出如下:SQLite插件科爾多瓦基本代碼

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> 
+0

你用過SQLite的插件嗎?如果是的話,那麼你也可以使用SQLite沒有任何插件。檢查鏈接:http://stackoverflow.com/questions/33879785/cordova-sqlite-plugin-not-functioning-with-android-studio/33894275#33894275 – Dhruv

+0

請閱讀文檔在這裏:https://github.com/litehelpers/Cordova-sqlite-storage你的主要問題是,你的代碼不是事件驅動的。您不能在事件驅動腳本中使用返回值。 – Joerg

+0

@Dhruv我使用Joerg描述的SQLite插件 – MichaelW

回答

0

如果你正在測試一個新的插件,圖書館,...什麼的,最好的辦法是閱讀的文檔,玩一點點隨着例子,並一步一步擴大您的需求。

SQLite插件是事件驅動的,也就是說,你必須等到作業完成。

你做這種方式,這工作:

var the_result = mySQL_Job(); 

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

正確的做法是:

mySQL_Job(); 

function mySQL_Job(some_values){ 
    tx.executeSql("SELECT * FROM myTable", [], function(tx, res) { 

     //Here goes your result handling, like inserting values in your html 

}, function(error) { 
    console.log('SQLite error: ' + error.message); 
    }); 
} 

這你必須爲每一個SQL工作要做,請參閱該文檔在:https://github.com/litehelpers/Cordova-sqlite-storage

如果您有很多查詢,那麼使用承諾是一個好主意:How to compact SQL instructions in Cordova?