Sqlite更新在模拟器上工作但不在设备上工作

时间:2013-07-15 16:35:56

标签: iphone database sqlite

我想更新我的表。这个代码在模拟器上工作,但在设备上不起作用。我发现我无法写入我的应用包中的任何文件,但我不知道如何将其更改为有效。请帮帮我。

-(NSString *)filePath
{ 
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDir=[paths objectAtIndex:0];
    NSError *error;
    bool success;
    NSString *writablePath = [documentsDir stringByAppendingPathComponent:@"Test.sqlite"];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    success = [fileManager fileExistsAtPath:writablePath];
    if(!success)
    {
        NSString *defaultPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Test.sqlite"];
        success = [fileManager copyItemAtPath:defaultPath toPath:writablePath error:&error];   
    }
    NSLog(@"%@",writablePath);
    return   writablePath;
}

然后:

- (IBAction)addToFavorite:(id)sender
    {
        [self filePath];
        sqlite3_stmt *updateStatement=nil;
        NSString *sql=[[NSString alloc]initWithFormat:@"UPDATE A SET favorite=? WHERE x='%@' ",mystring];
        if (sqlite3_prepare_v2(db, [sql UTF8String], -1, &updateStatement, nil)==SQLITE_OK)
        {
            sqlite3_bind_text(updateStatement, 1, [@"1" UTF8String], -1, SQLITE_TRANSIENT);

        }
        if (sqlite3_step(updateStatement)!=SQLITE_DONE)
        {
            NSAssert(0,@"Error While Creating Update Statement. '%s'",sqlite3_errmsg(db));
        }
        sqlite3_reset(updateStatement);     
    }

1 个答案:

答案 0 :(得分:0)

我认为您在模拟器中进行了更改,但在设备上新数据库尚未更新。

只需从设备中删除您的应用并重新运行即

  

清洁安装