2012-02-14 76 views
0

我试图插入一些数据到Web数据库。但我遇到了一个问题。当我使用Web SQL,我遇到了麻烦

我的代码:

database(); 

for(var i=0;i<m.length;i++){ 
    showid = m[i].id; 
    showtitle = m[i].title; 
    insert(); 
} 

function database(){ 
    //open the database 
    db = window.openDatabase("youyanchu", "1.0","youyanchu",500000); 
    db.transaction(function(tx) { 
    var table = tx.executeSql("CREATE TABLE showList (id int PRIMARY KEY, title NVARCHAR, finishDate NVARCHAR, status NVARCHAR, tkCount NVARCHAR)"); 
    }); 
} 

//INTEGER NOT NULL PRIMARY KEY 

function insert(){ 
    db.transaction(function(ar) { 
    ar.executeSql("INSERT INTO showList (id, title,finishDate,status) values(?,?,?,?)", [showid,showtitle,'aaa','bbb']); 
    }); 
} 

m.length是3和 “m” 应该是

AAA = { 'ID': '999', '标题': 'ninini'}

BBB = { 'ID': '888', '标题': 'ninini'}

CCC = { 'ID': '777', '标题': 'ninini'}

最后,只是“ccc”显示在网络SQL。

如何将所有数据插入数据库?我在代码中犯了什么错误?

回答

2

由于tx.executeSql是异步的,我相信您的loop在第一个insert运行之前完成。

因此showidshowtitle总会有对象的最后的值m

试试这个:

for(var i=0;i<m.length;i++){ 
    insert(m[i].id, m[i].title); 
} 


function insert(id, title){ 

    db.transaction(function(tx) { 
    txexecuteSql("INSERT INTO showList (id, title,finishDate,status) values(?,?,?,?)", [id, title,'aaa','bbb']); 
    }); 

} 
相关问题