2017-05-08 45 views
0

我有一个很大的问题与命令VACUUM释放内存删除的SQL句子。sqlite3真空,如何使用科尔多瓦APP

我正在制作Cordova Android APP,我知道当我使用DELETE SQL语句时,应用程序的空间不下来,......空间像片段HardDisk一样持续存在。

然后,我看到VACUUM可以压缩我的数据库,但我遇到了问题!

我使用sqlite3的,真空的所有网站说,不容在一个事务中执行,就像这样:

var db = window.sqlitePlugin.openDatabase({name:"maintenance", location:'default'}); 
db.transaction(function (tx) { 
    tx.executeSql('VACUUM', [], function (tx, results) { 
     alert('done'); 
}, function (tx, error) { 
     alert('error'); 
     alert(error.message); 
    }); 
}); 

好了,好了,然后,如果我不能在事务办,能你告诉我如何执行真空或自动真空或类似的东西来压缩BD而不写行命令? (请记住,它是一个移动应用程序)

回答

1

the GitHub Page,你应该能够执行SQL事务之外与db.executeSql

db.executeSql("VACUUM", [], function(rs) { 
    // ok 
}, function(err) { 
    // handle error 
}); 
+0

你好, 感谢您的帮助,我用出交易。显示OK块中的消息“VACUUM DONE”,但没有结果。应用程序的数据大小与真空之前和之后相同。 – Armando

+0

@Armando您要删除多少数据? SQLite以页面大小的倍数分配空间,所以如果你只删除了几行,它将不会释放足够的空间来释放页面。 –

+0

没错!我将40000行插入到bbdd表中,安装时我的应用数据大小为484KB,40k行为2.18MB。然后用真空低我的数据大小为500KB。 THX上校为你提供帮助:) – Armando