База данных не обновляется - PullRequest
0 голосов
/ 08 марта 2012

Я работаю с базой данных. Когда я обновляю свои поля в первый раз, база данных обновляется. Но когда я пытаюсь обновить в следующий раз, она не обновляется, но показывает, что база данных обновляется. Могу ли я знать, где проблема.Спасибо!

-(void) updateData {

    sqlite3_stmt    *statement;

    details = [updateArray objectAtIndex:0];

    NSString *destinationPath = [self getDestinationPath];

    const char *dbpath = [destinationPath UTF8String];

    if (sqlite3_open(dbpath, &database) == SQLITE_OK)
    {

        NSString *updateSQL = [NSString stringWithFormat: @"UPDATE BirthdayRemainderList SET FirstName=\"%@\", LastName=\"%@\",Dob=\"%@\",Address=\"%@\",City=\"%@\",State=\"%@\",Email=\"%@\",Phone=\"%@\" WHERE ids=%@",details.firstNameString,details.lastNameString,details.dobString,details.addressString,details.cityString,details.stateString,details.emailString,details.PhoneString,details.ids];

        const char *insert_stmt = [updateSQL UTF8String];

        sqlite3_prepare_v2(database, insert_stmt, -1, &statement, NULL);
        if (sqlite3_step(statement) == SQLITE_DONE)
        {
            NSLog(@"Row updated");

        } 

        else {
            NSLog(@"Failed to update row");
        }
        sqlite3_finalize(statement);
        sqlite3_close(database);
    }

}

Мой код обновления идет сюда

-(IBAction) update
{
    AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    savedData = [[DetailsClass alloc] init];

    savedData.firstNameString = firstName.text;
    savedData.lastNameString = lastName.text;
    NSLog(@"last name is %@",savedData.lastNameString);
    savedData.dobString = dob.text;
    savedData.addressString = address.text;
    savedData.cityString = city.text ;
    NSLog(@"Changed city value is %@",savedData.cityString);
    savedData.stateString = state.text;
    savedData.emailString = email.text;
    NSLog(@"Changes state value is %@",savedData.emailString);
    savedData.PhoneString =  phone.text;
    NSLog(@"Phone no is %@",savedData.PhoneString);
    savedData.ids = idString;
    NSLog(@"details in id %@",savedData.ids);
    [delegate.updateArray addObject:savedData];
    [delegate updateData];

}

Будет ли это делать ошибку? Если мы будем использовать два разных массива для сохранения и обновления, это будет иметь значение?

Дайте мне знать, где проблема. Спасибо!

1 Ответ

1 голос
/ 08 марта 2012

Добавьте сообщение об ошибке sqlite, чтобы лучше понять реальную проблему.

sqlite3_prepare_v2(database, insert_stmt, -1, &statement, NULL);
    if (sqlite3_step(statement) == SQLITE_DONE)
    {
        NSLog(@"Row updated");

    } 

    else {
        NSLog(@"Failed to update row %s", sqlite3_errmsg(database));
    }

Если sql db занят каким-либо образом, это произойдет.Убедитесь, что вы закрыли БД, если открыли в каком-то другом месте, например в аддоне Firefox.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...