如图 关于回调嵌套 查询一条数据的 id 将查到的id作为下一条数据的 父id,想要实现这功能应该怎么改!
解决方案 »
- JS调用MSComm32 ActiveX,CTSHolding始终为False
- 关于制作论坛问题的请教
- 求从下面网上滑出的菜单..
- 帮偶看看咋回事呀?
- 求一段简单的小代码(100分)
- 敬请大神帮忙看看js下拉菜单不支持ie7
- execCommand问题
- 我由客户端从服务器上下载一个名称是中文的EXCEL表,可下载时表的名称是乱码?如何设置?
- 谁有空帮我改改代码!美化美化,急啊,领导要,我不懂JAVASCRIPT:(求救
- jquery 谷歌报错:Syntax error, unrecognized expression: )))
- 为什么在子类当中循环之后不能传递给他的父类
- 安装vue 报错。求大佬解释。
JavaScript apply与call的用法及区别
jqGrid中文API
function insert(i,id){
SqliteUtil.executeSql(db,"SELECT id FROM TABLE_NAME WHERE name='"+arr[i-1]+"'"),null,function(res){
var pid = res.rows.item(0).id;
SqliteUtil.executeSql(db,"INSERT INTO TABLE_NAME (name,pid) VALUES ('"+arr[i]+"',"+pid+")",null,function(res){
insert((i+1), res.insertId);
},null);
},null);
}
不行哦,插入语句还是在最后,这时候,查询出来的是没有这条数据的,而不是一条查询,一条插入
嗯,是多了个) , 比如 arr.length == 4 这时候他会查询4次后 在去执行插入语句,所以,因为没有插入,所以查询时候数据中没有这条数据
嗯,是多了个) , 比如 arr.length == 4 这时候他会查询4次后 在去执行插入语句,所以,因为没有插入,所以查询时候数据中没有这条数据看你结构就是查询,然后执行插入,在执行下一次操作,没问题啊如果是都循环完毕了再插入,那就是数据库可能做了什么缓存插入,一定间隔内执行多条语句什么的延时插入。。你用的什么数据库,sqlite?
嗯,是多了个) , 比如 arr.length == 4 这时候他会查询4次后 在去执行插入语句,所以,因为没有插入,所以查询时候数据中没有这条数据看你结构就是查询,然后执行插入,在执行下一次操作,没问题啊如果是都循环完毕了再插入,那就是数据库可能做了什么缓存插入,一定间隔内执行多条语句什么的延时插入。。你用的什么数据库,sqlite?
对的,是sqlite ,应该不是数据库的问题,我觉得是异步调用的问题?,数据查询成功,在成功的回调中进行插入数据,接着在插入成功的回调中循环函数。
var arr = ['a', 'b', 'c', 'd', 'e']; var db = openDatabase('test', '1.0.0', '', 65535);
db.transaction(function (t) {
t.executeSql('create table if not exists test(id INTEGER PRIMARY KEY AUTOINCREMENT,name text,pid int)', null,
function () {
t.executeSql('delete from test', null, function () {
console.log('delete ok')
t.executeSql("insert into test(name,pid)values('" + arr[0] + "',0)", null, function () {
console.log('insert ok')
Insert(1);
}, function () { console.log(arguments) })
}, null)
}, null); });
function Insert(i) {
db.transaction(function (t) {
t.executeSql("select id from test where name='" + arr[i - 1] + "'", null, function (t, rs) {
var id = rs.rows.item(0).id;
console.log(id)
t.executeSql("insert into test(name,pid)values('" + arr[i] + "'," + id + ")", null, function () {
if (i + 1 < arr.length) Insert(i + 1);
else {//arr全部插入,查看数据库记录
t.executeSql('select * from test', null, function (t, rs) { alert(JSON.stringify(rs.rows))
})
}
}, null);
}, function () { console.log('查询id失败') })
})
}
</script>