2011-04-04 4 views
1

J'essaie d'utiliser SQLite dans phonegap pour iPhone, je suis confronté au problème suivant, S'il vous plaît jeter un oeil sur le code javascript ci-dessous. Merci beaucoupSQLite dans PhoneGap iPhone

function testAsSeperateFunctionDB(contact) 
{ 
    database.transaction(
    function(transaction){ 
     alert("enteringIntoTransaction"); 
     transaction.executeSql(
     'INSERT INTO testTableThree (contactId, mrMrs, firstName, 
      lastName, jobTitle, bActive, homePhone, contactType, accountId, 
      workPhone, cellularPhone, workFax, contactEmail, owner, 
      alternateCountry, alternateAddress1, alternateAddress2, 
      alternateZipCode, alternateCity, alternateProvince) 
     VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);', 

     [contact.contactId, contact.mrMrs, 
     contact.firstName, contact.lastName, 
     contact.jobTitle, contact.bActive, 
     contact.homePhone, contact.contactType, 
     contact.accountId, contact.workPhone, 
     contact.cellularPhone, contact.workFax, 
     contact.contactEmail, contact.owner, 
     contact.alternateCountry, contact.alternateAddress1, 
     contact.alternateAddress2, contact.alternateZipCode, 
     contact.alternateCity, contact.alternateProvince], 

     //Callback after successful transaction 
     function(transaction, results) { 
      alert("added"); 
     }, 

     //Callback after error in transaction 
     function(transaction, error) { 
      alert("Error" + error.code); 
     } 
    ); 
    } 
); 
} 

J'utilise la fonction ci-dessus pour ajouter un ensemble de coordonnées dans une table, je vais passer un objet JSON à cette fonction. J'appelle la fonction ci-dessus dans la structure de boucle suivante.

for(i = 0; i < contactFullObjArray.length; i++) { 
    //Parse the ContactFull object 
    var contact=ContactFull.parse(contactFullObjArray[i]);  
    testAsSeperateFunctionDB(contact);   
} 

ce qui se passe ici est la transaction se passe seulement après l'ensemble de la boucle est exécuté, et il devient appelé une seule fois, ce qui ne fait que les valeurs finales qui sont passés à ajouter dans la table. (Je reçois l'alerte « enteringIntoTransaction » une seule fois, et que la valeur ajoutée est d'obtenir dans la base de données. Merci beaucoup pour votre aide

Répondre

1

Je résolu ce problème en plaçant le

transaction.executeSql()