# [TITANIUM]遠端更新sqlite資料庫

- URL: https://justfly.idv.tw/titanium%e9%81%a0%e7%ab%af%e6%9b%b4%e6%96%b0sqlite%e8%b3%87%e6%96%99%e5%ba%ab/
- 日期: 2012-03-07
- 分類: WEB&amp;RIA
- 標籤: app, apple store, iphone, javascript, sqlite, Titanium

sqlite雖然不是一個很安全的系統，但是如果只是拿來做記錄、查詢可以說是非常的方便！只是在做資料更新時就比較困難（還加上APPLE STORE那超級久的審查時間）。如果只是小筆資料的變更，我們當然會希望可以讓我們在遠端做資料庫內容的管理！

https://justfly.idv.tw/wp-content/uploads/2012/03/sqlite.png

把原本的[字串處理變成sqlite資料庫](https://justfly.idv.tw/2012/03/07/Just_1116.html)後，能做的查詢也就變更多了！

原來想說既然sqlite只用一個檔案就可以管理，就從遠端下載新版本覆蓋就好了！應該不是一件很困難的事…..

卻原來也不是這麼理所當然的樣子～

```
exports.updateDb = function() {
	var xhr = Ti.Network.createHTTPClient(); 
	xhr.timeout = 1000000;
	xhr.onerror = function(e2){
		Ti.UI.createAlertDialog({title:'Error', message:L('update fail')}).show();
		Ti.App.fireEvent("updateDbError");
	};
	xhr.setTimeout(20000);
	xhr.onload = function() {
	    var db = Ti.Database.open(DATABASE_NAME);
	    db.remove();
	    db.close();
	    
	    var f = Ti.Filesystem.getFile(Titanium.Filesystem.applicationDirectory+'../tmp/', 'justdata.sqlite'); 
	    f.write(this.responseData);
	    f.remoteBackup = false;
	    var db = Ti.Database.install(f.nativePath, DATABASE_NAME); 
	   
	    db.close();
	    Ti.App.fireEvent("updateDbSuccess");
	}; 
	xhr.open('GET', 'http://xxx.xxx.xxx.xx/justdata.sqlite'); 
	xhr.send(null);
};
```

主要是ios4跟ios5的路徑讀取方式不同，ios5還會自動做備份。所以在這中間又多花了一點時間＠＠

還是要來想辦法把iphone模擬器升級到ios5才好阿！！
