Я новичок в xcode, и у меня возникла проблема с обновлением sqlite.update sqlite в приложении iOS
readBioViewController.h
@interface readBioViewController : UIViewController {
NSString *fav;
}
readBioViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
fav = @"1";
}
- (IBAction)addFavorito:(id)sender {
DataDAO *dbCrud = [[DataDAO alloc] init];
NSLog(@"addFavorito favid '%@'.", fav);
[dbCrud addFavorito:fav];
}
DataDAO.m
-(void)addFavorito:(NSString *)fav {
NSFileManager *fileMgr = [NSFileManager defaultManager];
NSString *dirPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"versos.sqlite"];
BOOL success = [fileMgr fileExistsAtPath:dirPath];
if(!success) {
NSLog(@"Cannot locate database file '%@'.", dirPath);
}
if(!(sqlite3_open([dirPath UTF8String], &db) == SQLITE_OK)) {
NSLog(@"An error has occured.");
}
NSString *sql = @"update Versos set favorito = 1 Where id = 2";
char *err;
if(sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) {
sqlite3_close(db);
NSLog(@"erro no update");
} else
NSLog(@"fez o update");
}
У меня есть кнопка (IBOutlet - addFavorito), и я хочу, чтобы выполнить SQL для обновления ID (2). Я вижу в NSLog результат «NSLog (@« fez o update »); но когда я открываю versos.sqlite, результат в ID 2 является favorito = 0 и no favorito = 1.
Почему вы пытаетесь выполнить команду, даже когда открыты не удалось? Почему вы закрываете БД только при возникновении ошибки? У этой записи есть ID '2' или' '2''? –
ID 2 (целое число) и «favorito» - CHAR. Эта команда SQL "update Versos set favorito = '1' Где id = 2" в порядке, когда я выполняю в SQLite Manager – eugui