2012-10-10 19 views
0

我想保存數據庫文件中文檔目錄,而不是/庫/私文書使用鈦的API文件夾保存數據庫文件的文件目錄。如何使用鈦

var database = Titanium.Database.install('/db/Database.sqlite',DatabaseHandler.DB_NAME); 

而我們,而在

iPhone Simulator/5.0/Applications/B750AD49-5879-4ABD-B903-C76A03833BE4/Documents/dbDir/Database.sql 

iPhone Simulator/5.0/Applications/B750AD49-5879-4ABD-B903-C76A03833BE4/Documents/Database.sql 

的基本要求是,需要它,它是越來越保存到

iPhone Simulator/5.0/Applications/B750AD49-5879-4ABD-B903-C76A03833BE4/Library/Private Documents/Database.sql 

,我們不希望用戶的數據在新的應用更新中丟失。在App Store的新應用更新中,僅保存文檔目錄數據,並且刪除所有數據。

如果我手動移動數據庫文件有:

if(Ti.Platform.osname === 'iphone'){ 
    var dbFile = database.file; 
    var filePath = String.format('%s/%s.sql',dbDir.resolve(),DatabaseHandler.DB_NAME); 
    Ti.API.info(filePath); 
    var result = dbFile.move(filePath); 
    Ti.API.info(result); 
} 

然後在運行的應用程序,我得到的問題與消息:

消息=「無效的SQL語句錯誤域= COM 「。」UserInfo = 0x9c14ed0 {com.plausiblelabs.pldatabase.error.vendor.code = 1,NSLocalizedDescription =解析提供的SQL語句時出錯。 com.plausiblelabs.pldatabase.error.query.string = SELECT * FROM UserProfile,com.plausiblelabs.p ldatabase.error.vendor.string =沒有這樣的表:用戶配置}在 - [TiDatabaseProxy執行:(TiDatabaseProxy.m:186)」

回答

2

你是如何打開數據庫?

如果您使用Ti.Database.open('MyDatabase'),因爲您已將它移至其他位置,它將在默認位置創建一個名爲「MyDatabase」的空白數據庫。數據庫的原始安裝位置發生了。據我所知,這是Ti.Database.open的默認功能。如果數據庫不存在,則創建它。由於這個數據庫是新的,並且沒有表格,所以表格UserProfile不存在。

我不知道是否有方法讓您在Ti.Database.open調用中限定數據庫的位置。例如,我不知道是否

Ti.Database.open('/iPhone Simulator/5.0/Applications/B750AD49-5879-4ABD-B903-C76A03833BE4/Documents/dbDir/MyDatabase') 

將工作或沒有。您需要將公開呼叫告訴數據庫所在的位置,因爲您已將其從預計要找到它的位置移開。也許情況並非如此,但是您的示例代碼並未顯示您對數據庫的使用情況,而是顯示了您如何管理文件的移動。

+0

打開的查詢不起作用。基本上Ti.Database.install做的是同樣的事情,它首先檢查文件是否存在,如果是,那麼就打開該文件。 –