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