2012-12-10 69 views
1

出於某種原因,下面的代碼無法正常工作:的PhoneGap + SQLite的問題

var users = window.SQLitePlugin.openDatabase("users","1.0","Demo",-1); 
users.transaction(function(tx){ 
    KovarApp.lib.say("Transaction Started"); 
    var createString = "CREATE TABLE IF NOT EXISTS 'users' ('id' integer(11) primary key, 'username' varchar(25),'password' varchar(100),'firstname' varchar(25),'lastname' varchar(25),'qdatabase' varchar(20),'ugroup' varchar(50),'status' varchar(50))"; 
    tx.executeSql(createString,[],function(tx,res){ 
     KovarApp.lib.say("Create Worked"); 
    },function(){ 
     KovarApp.lib.say("Create Failed"); 
    }); 

    var insertString = "INSERT INTO users (username,password,firstname,lastname,qdatabase,ugroup,status) values ('jktest','e10adc3949ba59abbe56e057f20f883e','Andrew','Rhyne','basictemplate','admin','yes')"; 
    tx.executeSql(insertString,[],function(tx,res){ 
     KovarApp.lib.say("Insert Worked"); 
    },function(){ 
     KovarApp.lib.say("Insert Failed"); 
    }); 

    var testString = "SELECT 1 FROM users WHERE username = 'jktest'"; 
    tx.executeSql(testString,[],function(tx,res){ 
     KovarApp.lib.say("res.rows.length: " + res.rows.length + " -- should be 1"); 
    }); 
    KovarApp.lib.say('Transaction Ended'); 
}); 

我的日誌功能吐出交易開始,交易結束,但回調不觸發對個人查詢。我正在使用Brody的sqlite3插件:https://github.com/brodyspark/PhoneGap-SQLitePlugin-Android

這裏的任何幫助都很棒。我真的不知道我做錯了什麼,但它根本不起作用。作爲一個附註,他指定數據庫大小沒有任何限制,用-1表示(意味着沒有大小限制)。

+0

jktest?真? – rojobo

回答

2

所有的回調函數都是異步執行的。 在您的代碼中,插入/選擇命令在前面的命令完成之前啓動,事務在各個命令完成之前結束。

將代碼移動到前一個命令的成功回調函數中。
換句話說,transactionexecuteSql調用應始終是其包含函數中的最後一個語句。

+0

但是這並不能解釋爲什麼沒有任何回調正在執行。它應該是吐出「創造工作」等... –

+0

據我所知,它沒有正確的結構,但回調應該射擊至少創建查詢,無論結構 –

0

Brody項目中的Javascript文件暫時依賴於平臺。它看起來像最終會抽象的地方,所有的JavaScript都是可移植的,但這是問題 - 我有iOS版本的JS文件運行在Android上。 Duhh