2012-02-14 2 views
0

Web SQLデータベースにデータを挿入しようとしましたが、問題が発生しました。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 = { 'ninini' 'ID': '777'、 'タイトル'} 、ちょうど "ccc"表示Web SQLで。

すべてのデータをデータベースに挿入するにはどうすればよいですか?コードで間違いがありましたか?

答えて

2

tx.executeSqlは非同期なので、最初のinsertが実行される前にloopが終了すると思います。 m

が代わりにこれを試してみてください

したがってshowidshowtitleは常にオブジェクトの最後の値を持つことになります。

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']); 
    }); 

} 
関連する問題