2012-02-14 101 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']); 
    }); 

} 
相關問題