2017-05-08 18 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