我需要在SQLite数据库中插入大量数据。我使用交易。没有这些交易,我很遗憾没有机会填补这些表格。我的代码是这样的:
database.transaction(function(transaction) {
for(var i = 0; i < 300; i++) {
sql = "INSERT INTO test (fielda, fieldb, fieldc) VALUES (111, 1, 23.53)";
transaction.executeSql(sql, function(result) {
});
}
}, function() {
database.transaction(function(transaction) {
for(var i = 0; i < 300; i++) {
sql = "INSERT INTO test (fielda, fieldb, fieldc) VALUES (111, 1, 23.53)";
transaction.executeSql(sql, function(result) {
});
}
}, function() {
.................and so on..............
alert("done");
}, function(error) {
alert("error");
});
}, function(error) {
alert("error");
});
它可以在我的iPad 2上快速轻松地工作,但在我的Galaxy Tab 3上崩溃的速度同样快。似乎连续交易的次数无关紧要,但它们必须完全执行的插入次数。总是在第900个入口附近崩溃。这意味着它在第4次交易中崩溃,其中i&lt; 300但是需要10次交易,其中i&lt; 100崩溃。
我甚至尝试通过单击一次按钮调用3个事务,然后等待超过十分钟并通过单击另一个按钮调用第四个事务。它仍然崩溃。
还有其他奇怪的事情发生: 当我在调用事务之前的某个时刻调用“DELETE FROM test”时,应用程序会抛出错误消息“无法执行此操作,因为没有当前事务”。就在它崩溃之前,然后在交易期间。但只有这样。
我已经玩过每一个PRAGMA,比如page_size,journal_mode等。它不会改变一件事。