FMDB에 대한 문서를 수 백만 번 읽은 것처럼 느껴집니다. 왜이 코드가 작동하지 않는지 잘 모르겠습니다. executeUpdate 메서드와 executeMethodWithFormat 및 해당 형식을 시도했지만 어느 것도 작동하지 않는 것 같습니다. _dbArray는 사전 배열입니다. 이 줄은 올바른 값을 반환합니다. 결과를 복사하여 붙여 넣고 터미널에서 쿼리를 실행하면 레코드를 제거합니다. 나는 명백한 무엇인가 놓치고 있냐?FMDB가있는 SQLite 데이터베이스에서 행을 삭제
- (IBAction)deleteDbEntry:(id)sender {
// get selected row
NSInteger row = [_dataTable selectedRow];
// get the entry number
NSString *idToDelete = [[_dbArray objectAtIndex:row] valueForKey:@"entryColumn"];
// open DB for writing
if (![db open]) {
[db open];
}
[db executeUpdate:@"DELETE FROM tbl1 WHERE entry = ?", idToDelete];
// close DB
if ([db open]) {
[db close];
}
[_dataTable reloadData];
return;
}
업데이트 : 귀하의 제안을 받았지만 여전히 작동하지 않으며 그 이유를 모르겠습니다. DB의 열기와 닫기가 다른 곳에서 일어나고 있습니다. (@ccgus 감사합니다.) 문자열을 NSNumber (감사합니다 @bryanmac)로 변환하고 있습니다. NSLog(@"myNumber is %@", myNumber);
전화가 올바른 번호를 반환하고 내가 삭제가 일어나지 않았 음을 확인할 수 있습니다. NSLog(@"Error %d: %@", [db lastErrorCode], [db lastErrorMessage]);
에 오류가보고되지 않습니다 (Error 0: (null)
). 그것은 작동해야처럼
[db executeUpdateWithFormat:@"DELETE FROM tbl1 WHERE entry = %@", myNumber];
및
[db executeUpdate:@"DELETE FROM tbl1 WHERE id = ?", [NSNumber numberWithInt:myNumber]];
첫 번째 보이지만, 내가 그것을 행을 삭제하지 않습니다 확인했다 : 나는 또한 노력했다. "포인터 변환에 호환되지 않는 정수"가있는 두 번째 오류. 나는 무엇을 놓치고 있습니까? 추가
- (IBAction)deleteDbEntry:(id)sender {
// get selected row
NSInteger row = [_dataTable selectedRow];
// get the entry number
NSString *idToDelete = [[_dbArray objectAtIndex:row] valueForKey:@"entryColumn"];
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *myNumber = [f numberFromString:idToDelete];
NSLog(@"myNumber is %@", myNumber);
[db executeUpdate:@"DELETE FROM tbl1 WHERE entry = ?", myNumber];
NSLog(@"Error %d: %@", [db lastErrorCode], [db lastErrorMessage]);
[_dataTable reloadData];
return;
}
http : // novasys.in/2013/11/22/fmdb-implimentation-ios-applications/ – sohil
http://www.brianjcoleman.com/framework-using-fmdb-to-communicate-with-sqlite-databases/ – sohil