2012-03-08 6 views
0

데이터베이스를 처음 사용하는 동안 데이터베이스를 업데이트하는 중입니다. 다음 번에 데이터베이스를 업데이트하려고 시도하지만 데이터베이스를 표시하면 데이터베이스가 업데이트됩니다. 문제는 고맙습니다!데이터베이스가 업데이트되지 않습니다.

-(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]; 

} 

이 어떤 실수 을 만들 것 간다?

문제가 어디 있는지 알려주세요. 감사합니다.

+0

어딘가에 다른 곳에서도 열어 둔 db의 인스턴스가 있습니까? sqlite dbmanager와 같을 수도 있습니다. –

+0

아니요 ... 어떤 인스턴스도 열지 못했습니다. – Kiran

답변

1

실제 문제에 대한 더 자세한 정보를 얻으려면 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)); 
    } 

어떻게 든 그것은 일어날 것입니다. 파이어 폭스의 애드온을 좋아하는 곳에서 열어 본다면 데이터베이스를 닫아야합니다.

+0

: 감사합니다.하지만 무슨 일이 일어 났는지는 처음으로 변경된 내용입니다. 업데이트 된 내용과 2 번째 이후부터는 Row가 업데이트 중이지만 업데이트되지 않은 필드를 확인하면됩니다 .U 주어진 Fail 조건에 대한 변경 사항이지만 행이 업데이트 중입니다. 내가해야하는 것? 실행중인 인스턴스가없는 경우 추가하십시오. 모든 인스턴스를 닫았지만 여전히 동일합니다. – Kiran

+0

consrtucted 쿼리를 복사하십시오. NSLog (@ "% @", updateSQL)를 의미합니다. 그리고 일부 sqlite 관리자에서 쿼리를 직접 실행하여 업데이트 중인지 확인하십시오. – Vignesh

+0

그것의 변화 없음 .... 아직도 동일한 – Kiran

관련 문제