【发布时间】:2011-07-29 00:59:15
【问题描述】:
我正在尝试在 iPhone 的 phonegap 中使用 SQLite,我遇到了以下问题,请查看下面的 javascript 代码。 非常感谢
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);
}
);
}
);
}
我正在使用上述函数将一组联系人详细信息添加到表中,我将向该函数传递一个 JSON 对象。我在下面的循环结构中调用了上面的函数。
for(i = 0; i < contactFullObjArray.length; i++) {
//Parse the ContactFull object
var contact=ContactFull.parse(contactFullObjArray[i]);
testAsSeperateFunctionDB(contact);
}
这里发生的是事务仅在整个 for 循环执行后才发生,并且它只被调用一次,这使得只有传递的最终值被添加到表中。 (我只收到一次警报“enteringIntoTransaction”,并且该值正在添加到数据库中。非常感谢您的帮助
【问题讨论】:
标签: javascript iphone sqlite html cordova