iphone 3.1.2上的sqlite3写权限问题

时间:2009-11-09 10:13:21

标签: iphone permissions sqlite adhoc

我正在开发一款针对iphone的游戏,其中图像从互联网上加载,然后存储在本地数据库中,因此无需再次加载。这一直很好。 最近我为测试组创建了一个新的adhoc发行版(我第一次使用SDK 3.1.2创建发行版),现在每个将iphone升级到3.1.2的人都不再能够写入数据库了,因此必须每次从互联网加载图像。 iphone版本低于3.1.2的用户没有问题,之前的版本(SDK 3.1或更低版本)在带有3.1.2的iphone上没有问题。 我对游戏所做的更新与游戏中的数据管理器无关。另一个奇怪的事情是我在控制台中没有使用以下代码找到任何消息:

- (void) saveImage:(NSString *)imagePath withData:(NSData *)imageData {
    if (insert_image_statement == nil){
        const char *sql2 = "INSERT INTO image (imagePath, imageData) VALUES (?, ?);";
        if (sqlite3_prepare_v2(database, sql2, -1, &insert_image_statement, NULL) != SQLITE_OK) {
            NSLog(@"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
        }
    }
    sqlite3_bind_text(insert_image_statement, 1, [imagePath UTF8String], -1, NULL);
    sqlite3_bind_blob(insert_image_statement, 2, [imageData bytes], [imageData length], NULL);
    int success = sqlite3_step(insert_image_statement);
    if (success == SQLITE_ERROR){
        NSLog(@"Error: failed to insert statement with message '%s'.", sqlite3_errmsg(database));
    }
    sqlite3_reset(insert_image_statement);
}

所以sqlite3没有抛出错误,这可能指向我解决这个问题。有没有人知道为什么使用SDK 3.1.2我似乎没有权限将数据写入数据库?

1 个答案:

答案 0 :(得分:0)

此问题已解决?我遇到了与3.1.2中的Device / Release版本类似的问题,其中if(sqlite3_exec(...))中抛出了错误;语句,但不返回任何错误消息。

********更新:通过修改引用以包含设备上的完整路径来达到部分解决方案。 Google的“checkAndCreateDatabase”方法代码。我仍然在3.1.2操作系统中的设备上的sqlite prepare语句中出现故障,我在模拟器中没有。**********

-(void)initializeDatabaseFunctions {

databaseName = "RowTable.db";
returnCode = sqlite3_open(databaseName, &sqlite);

NSString *dropRows = [[NSString alloc]initWithFormat:@"DROP TABLE IF EXISTS rows;"];
if(sqlite3_exec(sqlite, [dropRows UTF8String], NULL, NULL, &errorMsg) != SQLITE_OK) {
    NSLog(@"Error DROP TABLE IF EXISTS rows: %s", errorMsg);
sqlite3_free(errorMsg);}