我想使用Titanium API在文档目录而不是 / Library / Private Documents 文件夹中保存数据库文件。
var database = Titanium.Database.install('/db/Database.sqlite',DatabaseHandler.DB_NAME);
它被保存到
iPhone Simulator/5.0/Applications/B750AD49-5879-4ABD-B903-C76A03833BE4/Library/Private Documents/Database.sql
而我们在
中要求它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
基本要求是,我们不希望用户的数据在新的应用更新中丢失。在App Store中的新应用程序更新中,仅保存文档目录数据,并删除所有数据。
如果我手动移动db文件:
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);
}
然后在运行应用程序时,我遇到了消息问题:
message =“无效的SQL语句.Error Domain = com.plausiblelabs.pldatabase Code = 3 \”解析提供的SQL语句时出错。\“UserInfo = 0x9c14ed0 {com.plausiblelabs.pldatabase.error.vendor.code = 1,NSLocalizedDescription =解析提供的SQL语句时发生错误。,com.plausiblelabs.pldatabase.error.query.string = SELECT * FROM UserProfile,com.plausiblelabs.pldatabase.error.vendor.string = no such table:UserProfile} in - [TiDatabaseProxy执行:](TiDatabaseProxy.m:186)“
答案 0 :(得分: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')
是否有效。您需要告知打开调用数据库所在的位置,因为您已将其从预期找到它的位置移动。也许情况并非如此,但您的示例代码并未显示您对数据库的使用情况,而是显示了您如何管理文件的移动。