如何在 Cordova 中压缩 SQL 指令? [英] How to compact SQL instructions in Cordova?
本文介绍了如何在 Cordova 中压缩 SQL 指令?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在制作一个将使用数据库的小应用程序,我想知道如何转换它:
I'm making a tiny app that will use Databases, I want to know how to convert this:
function testDB()
{
var db = window.openDatabase("Database", "1.0", "mydatabase", 2000000);
db.transaction(queryNames, errorDB);
}
function queryNames(tx)
{
tx.executeSql('SELECT name FROM people WHERE id=13', [], listNames, errorDB);
}
function listNames(tx, results)
{
for (var i=0;i<results.rows.length;i++)
{
alert(results.rows.item(i).name);
}
}
function errorDB(err)
{
alert("Fatal error");
}
这样的事情(如果可能更紧凑):
To something like this (either if it is possible more compacted):
function testDB()
{
var db = window.openDatabase("Database", "1.0", "mydatabase", 2000000);
db.transaction(queryNames('SELECT name FROM people WHERE id=13'), errorDB);
}
function queryNames(tx, query)
{
tx.executeSql(, [],
function listNames(tx, results)
{
for (var i=0;i<results.rows.length;i++)
{
alert(results.rows.item(i).name);
}
},
errorDB);
}
function errorDB(err)
{
alert("Fatal error");
}
简而言之,我正在尝试回收"代码.感谢阅读.
In few words, I'm trying to "recycle" the code. Thanks for reading.
推荐答案
SQLite 调用是一个事件.我使用 jQuery 创建了以下函数(该函数也在控制台中记录结果,因此您需要控制台插件才能工作):
The SQLite call is an event. I have created the following function by using jQuery (The function is also logging the results in the console, so you need the console plugin for working):
var db = window.openDatabase("Database", "1.0", "mydatabase", 2000000);
function queryDB(query) {
var start = Date.now();
var deferred = $.Deferred();
db.transaction(function (tx) {
tx.executeSql(query, [], function (tx, results) {
console.log("Rows: " + results.rows.length + " Time: " + (Date.now() - start) + "ms Query: " + query);
deferred.resolve(results);
}, function (error) {
console.log("Error processing SQL: " + error.code + " " + error.no + " Query: " + query);
});
}, function (error) {
console.log("Transaction Error: " + error.code + " " + error.no + " Query: " + query);
});
return deferred.promise();
}
函数调用是:
$.when(queryDB("SELECT * FROM table")).done(function (results) {
// Here your logic with the results
});
这种方式的好处是,可以同时调用多个查询:
The advantage of this way is, that you can call multiple queries the same time:
$.when(queryDB("SELECT * FROM table1"), queryDB("SELECT * FROM table2")).done(function (results1, results2) {
// Here your logic with the results
});
这篇关于如何在 Cordova 中压缩 SQL 指令?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文