2013-12-11 77 views
1

我正在構建一個Phone Gap應用程序,並使用db_transaction函數,下面的例子在這個documentation。我在db.transaction函數中看到了一些與參數順序有衝突的信息,我希望有人能夠解釋我所看到的差異。db.transaction,什麼是第一個錯誤回調或成功回調

在錯誤回調下面的例子是第二個參數,成功回調是第三個參數:

function populateDB(tx) { 
    tx.executeSql('DROP TABLE IF EXISTS DEMO'); 
    tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)'); 
    tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")'); 
    tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")'); 
} 

function errorCB(err) { 
    alert("Error processing SQL: "+err); 
} 

function successCB() { 
    alert("success!"); 
} 

var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000); 
db.transaction(populateDB, errorCB, successCB); 

下面是另一個例子,其中成功的回調是第三個參數和錯誤回調是第四。

function populateDB(tx) { 
     tx.executeSql('DROP TABLE IF EXISTS DEMO'); 
     tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)'); 
     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")'); 
     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")'); 
    } 

    function queryDB(tx) { 
     tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB); 
    } 

    function querySuccess(tx, results) { 
     var len = results.rows.length; 
     console.log("DEMO table: " + len + " rows found."); 
     for (var i=0; i<len; i++){ 
      console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data = " + results.rows.item(i).data); 
     } 
    } 

    function errorCB(err) { 
     console.log("Error processing SQL: "+err.code); 
    } 

    function successCB() { 
     var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000); 
     db.transaction(queryDB, errorCB); 
    } 

回答

1

不,這裏沒有衝突。 'transaction'是'Database'對象的方法,它的參數如'query,errorCallback,successCallback'。

另一方面, 'executeSql'是'Transaction'對象的方法,它的參數如 'query,IDONTKNOW,successCallback,errorCallback'。

所以文檔說實話,但我不明白爲什麼順序的回調參數也不同。我認爲不同的人設計了這些物體。

+1

僅供參考 - 事務的第二個參數是查詢參數(使用參數化查詢時) – ganders

相關問題