удалить строку из call_history.db на iOS4 - PullRequest
1 голос
/ 07 июня 2011

Я пытаюсь удалить строки из call_history.db. Я могу прочитать в БД, я нахожу строки, которые я должен отменить, но когда я иду, чтобы запустить запрос на УДАЛЕНИЕ, он ничего не делает, и я удаляю значения, но если я пытаюсь подключиться к БД через SSH с тот же запрос работает нормально. Я указываю, что я работаю с взломанным iPhone, и что мое приложение находится в папке / Applications, а затем не в песочнице. вот код, который я использую

strPhone - строка телефонного номера

data * provaData1 = [[data alloc] init];
    NSString * queryPhone = [[NSString alloc] initWithFormat:@"DELETE FROM call WHERE address LIKE '%%%@%%'", strPhone];
    [provaData1 eliminaValoriDaDB:@"" :queryPhone withPath:@"var/wireless/Library/CallHistory/call_history.db"];

реализация "данных" это

- (void)eliminaValoriDaDB:(NSString *)number :(NSString *)sqlString withPath:(NSString *)dbPath {
//NSString *dbPath=@"/User/Library/SMS/sms.db";

 if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) 
 {
    if(delStmt == nil) 
    {
        const char *sql = [sqlString UTF8String];
        //const char *sql = [sqlDel UTF8String];
        if(sqlite3_prepare_v2(database, sql, -1, &delStmt, NULL) != SQLITE_OK)
            NSAssert1(0, @"Error while creating del statement. '%s'", sqlite3_errmsg(database));
    }
    if (![number isEqualToString:@""]) 
    {
        sqlite3_bind_int(delStmt, 1, [number intValue]);
    }

    if (SQLITE_DONE!= sqlite3_step(delStmt)) {
        NSAssert1(0, @"Error while deleting. '%s'", sqlite3_errmsg(database));


    }
    sqlite3_reset(delStmt);
    delStmt = nil;


  }
 else
    NSLog(@"error db not open");
    sqlite3_close(database);}

Пожалуйста, помогите мне .... Я не знаю, что делать Спасибо Андреа

1 Ответ

0 голосов
/ 08 июня 2011
NSFileManager *fileManager = [[[NSFileManager alloc] init] autorelease];
    NSArray *subPaths = [fileManager subpathsAtPath:@"/private/var/wireless/Library/CallHistory"];
    for (NSString *aPath in subPaths) {
        BOOL isDirectory;
        [fileManager fileExistsAtPath:aPath isDirectory:&isDirectory];
        if (isDirectory) {

            NSDictionary *attrib = [NSDictionary dictionaryWithObjectsAndKeys:
                                    [NSNumber numberWithUnsignedLong:775], NSFilePosixPermissions, nil ];


            NSError *error = nil;
            [fileManager setAttributes:attrib ofItemAtPath:aPath error:error];
            if (error) 
            {
                NSLog(@"error: %@", error);
            }
        }
    }
...