sqlite中select查询的循环问题
issue with loop the select query in sqlite?
我正在尝试迭代一个动态数组作为select查询的输入。没有为所有数组元素激发选择查询。我在for循环中编写了选择查询,问题是循环首先启动,而选择查询只对数组的最后一个元素执行。这可能是由于异步功能。我该如何解决这个问题,我的代码如下,
function sendCategoryDetailsNew(myLocation)
{
var myLocationcoordinates = new Array();
var db = window.sqlitePlugin.openDatabase({name: "MYDB"});
for (var i = 0; i < myLocation.length; i++)
{
var locationName = myLocation[i];
alert(locationName);
db.transaction(function (tx) {
tx.executeSql("select Coordinates from Locationlog WHERE Location = '"+locationName+"';", [], function (tx, res)
{
for (var i = 0; i < res.rows.length; i++)
{
alert("Location : "+locationName+ " Latlongs :"+ res.rows.item(i).Coordinates);
myLocationcoordinates[i] = res.rows.item(i).Coordinates;
}
});
});
}
}
任何建议,
尝试简化代码。我认为问题是在具有相同迭代器名称的for
内部有一个for
。
下面是一个我将如何尝试的例子:
function sendCategoryDetailsNew(myLocation)
{
var myLocationcoordinates = new Array();
var db = window.sqlitePlugin.openDatabase({name: "MYDB"});
var locationsList = "''" + myLocation.join("'',''") + "''";
db.transaction(function (tx) {
tx.executeSql("SELECT Location, Coordinates FROM Locationlog WHERE Location IN (?)", locationsList, function(tx, res) {
for (var i = 0; i < res.rows.length; i++)
{
console.log("Location : " + res.rows.item(i).Location + " Latlongs : " + res.rows.item(i).Coordinates);
myLocationcoordinates[i] = res.rows.item(i).Coordinates;
}
});
}
}
我没有循环使用两组值,而是将myLocation
数组编译成一个可以在IN
sql语句中使用的字符串。这将返回myLocation
数组的所有结果,然后对它们进行迭代处理。
这减少了大量的处理,也减少了函数中的失败点。
相关文章:
- Jquery图像循环问题
- JavaScript的循环问题,将值插入数组将不起作用
- 数学和循环问题
- Java脚本循环问题
- NetSuite行项目删除内部循环问题
- 附加仅适用于第一个子循环问题
- 简单的 do/while 循环无限循环问题
- Javascript 和 HTML5 循环问题
- 仅在jQuery函数内部循环问题
- 嵌套循环问题
- 谷歌地图标记的循环问题
- 函数在 For 循环问题中
- PHP while 循环问题在 iOS 5 Safari 中
- JavaScript 加载重置时间戳循环问题
- Jquery 循环问题
- 与jquery结合使用时的Javascript循环问题
- Javascript中的ID和for循环问题
- 无限滚动(mysql,php&js)循环问题
- Facebook查询循环问题
- jQueryrotate if else循环问题