2012-07-23 43 views
1

當我從tableView中選擇一行,並從sqlite加載數據時,可以更改某個字段的值的目的。 操縱兩個視圖,第一個將整個數據庫加載到一個可變數組中,當我按下某個字段時,我轉到另一個視圖。在第二個視圖中,我有一個按鈕。如何獲得按下此按鈕時數據庫中的字段將更改值的結果。使用Xcode更改SQlite3中所選字段的值

TableviewController知道作爲AuthorVC.m

#import "AuthorVC.h" 
#import "Author.h" 
#import <sqlite3.h> 
#import "SearchVC.h" 
//#import "DetailViewController.h" 
#import "Details.h" 





@implementation AuthorVC 

@synthesize theauthors; 
@synthesize author; 
NSString *authorNAme; 
NSString *authorNAme2; 

- (id)initWithStyle:(UITableViewStyle)style 
{ 
    self = [super initWithStyle:style]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)didReceiveMemoryWarning 
{ 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

#pragma mark - View lifecycle 

- (void)viewDidLoad 
{ searchBar.delegate = (id)self; 
    [self authorList]; 
    [super viewDidLoad]; 



} 

- (void)viewDidUnload 
{ 
    [searchBar release]; 
    searchBar = nil; 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
} 

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
} 

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 

} 

- (void)viewDidDisappear:(BOOL)animated 
{ 
    [super viewDidDisappear:animated]; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 



-(void)searchBar:(UISearchBar*)searchBar textDidChange:(NSString*)text 
{ 
    if(text.length == 0) 
    { 
     isFiltered = FALSE; 
    } 
    else 
    { 
     isFiltered = true; 
     filteredTableData = [[NSMutableArray alloc] init]; 

     for (Author* author in theauthors) 
     { //[NSPredicate predicateWithFormat:@"SELECT * from books where title LIKE %@", searchBar.text]; 
      NSRange nameRange = [author.name rangeOfString:text options:NSAnchoredSearch]; 
      NSRange descriptionRange = [author.genre rangeOfString:text options:NSAnchoredSearch]; 
      if(nameRange.location != NSNotFound || descriptionRange.location != NSNotFound) 
      { 
       [filteredTableData addObject:author]; 

      } 
     } 
    } 

    [self.tableView reloadData]; 
} 


/* 
-(void) showDetailsForIndexPath:(NSIndexPath*)indexPath 
{ 

    NSLog(@"This is the showDetailsForIndexPath"); 
    [self->searchBar resignFirstResponder]; 
    Details* vc = [self.storyboard instantiateViewControllerWithIdentifier:@"Details"]; 
    AuthorVC* author; 

    if(isFiltered) 
    { 
     author = [filteredTableData objectAtIndex:indexPath.row]; 
    } 
    else 
    { 
     author = [theauthors objectAtIndex:indexPath.row]; 
    } 

    vc.author = author; 
    [self.navigationController pushViewController:vc animated:true]; 
    NSLog(author); 
} 
*/ 

#pragma mark - Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 

    // Return the number of sections. 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 

    int rowCount; 
    if(self->isFiltered) 
     rowCount = filteredTableData.count; 
    else 
     rowCount = theauthors.count; 

    return rowCount; 
    // Return the number of rows in the section. 
    //return [self.theauthors count]; 
} 
/* 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    // NSString *Title; 
    // Author *auth = (Author*)segue.destinationViewController; 
    Details *dv = (Details*)segue.destinationViewController; 
    dv.labelText.text = author.title; 
    NSLog(@"Did Enter prepareForSegue"); 
    // labelText.text = @"Hy"; 
} 
*/ 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"This is the one in authorVc"); 
    static NSString *CellIdentifier = @"AuthorsCell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    } 
    int rowCount = indexPath.row; 

    Author *author = [self.theauthors objectAtIndex:rowCount]; 


     if(isFiltered){ 
     author = [filteredTableData objectAtIndex:indexPath.row]; 
//   UIAlertView *messageAlert = [[UIAlertView alloc] 
//          initWithTitle:@"Filtered" message:titleString delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
//   
//   [messageAlert show]; 


    } 
    else{ 
     author = [theauthors objectAtIndex:indexPath.row]; 
//  UIAlertView *messageAlert = [[UIAlertView alloc] 
//          initWithTitle:@"Not filtered" message:titleString delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
//   
//  [messageAlert show]; 


    } 




    cell.textLabel.text = author.name; 
    // cell.detailTextLabel.text = author.genre; 
    //NSString *titleString = [[[NSString alloc] initWithFormat:@"Element number : %d",author.name] autorelease]; 

    return cell; 

} 


-(NSMutableArray *) authorList{ 
    theauthors = [[NSMutableArray alloc] initWithCapacity:1000000]; 
    NSMutableArray * new2 = [[NSMutableArray alloc ] initWithCapacity:100000]; 
    // authorNAme = theauthors.sortedArrayHint.description; 
    @try { 
     NSFileManager *fileMgr = [NSFileManager defaultManager]; 
     NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"data.sqlite"]; 

     BOOL success = [fileMgr fileExistsAtPath:dbPath]; 
     if(!success) 
     { 
      NSLog(@"Cannot locate database file '%@'.", dbPath); 
     } 
     if(!(sqlite3_open([dbPath UTF8String], &db) == SQLITE_OK)) 
     { 
      NSLog(@"An error has occured: %@", sqlite3_errmsg(db)); 

     } 


     // const char *sql = "SELECT F_Keyword FROM wordss"; 
    const char *sql = "SELECT * FROM Sheet1"; 

     sqlite3_stmt *sqlStatement; 
     if(sqlite3_prepare(db, sql, -1, &sqlStatement, NULL) != SQLITE_OK) 
     { 
     NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db)); 
     }else{ 
      while (sqlite3_step(sqlStatement)==SQLITE_ROW) { 
       Author * author = [[Author alloc] init]; 

       //NSString *authorName = author.name; 
       author.name = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,2)]; 

       author.title = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,4)]; 
       author.genre = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 6)]; 
       new2 = author.genre; 
       // NSLog(new2); 
       authorNAme=author.genre;    
       //NSLog(author.genre); 
       [theauthors addObject:author]; 

      } 
    //  authorNAme = author.genre; 


       } 
    } 
    @catch (NSException *exception) { 
     NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db)); 
    } 
    @finally { 
    // sqlite3_finalize(sqlStatement);. 
    // authorNAme = nil; 
     sqlite3_close(db); 
    // authorNAme = Nil; 
     return theauthors; 
    } 


} 


- (void)dealloc { 
    [searchBar release]; 
    [super dealloc]; 
    //[authorNAme release]; 
} 



//- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
//  
// /* 
//  When a row is selected, the segue creates the detail view controller as the destination. 
//  Set the detail view controller's detail item to the item associated with the selected row. 
//  */ 
// if ([[segue identifier] isEqualToString:@"ShowSelectedPlay"]) { 
//   
//  NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow]; 
//  Details *detailViewController = [segue destinationViewController]; 
//  detailViewController.author = [dataController objectInListAtIndex:selectedRowIndex.row]; 
// } 
//} 



- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 


    NSLog(@"This is the showDetailsForIndexPath"); 
    [self->searchBar resignFirstResponder]; 
    Details* vc = [self.storyboard instantiateViewControllerWithIdentifier:@"Details"]; 
    AuthorVC* author; 

    if(isFiltered) 
    { 
     author = [filteredTableData objectAtIndex:indexPath.row]; 
    } 
    else 
    { 
     author = [theauthors objectAtIndex:indexPath.row]; 
    } 

    vc.author = author; 
    authorNAme = vc.author.genre; 
    authorNAme2 = vc.author.name ; 
    NSLog(@"This is the details %@",vc.author.genre); 
    NSLog(@"This is the authorNAme Variable %@" , authorNAme); 
    vc.labelText.text = vc.author.genre; 
    vc.text2.text = vc.author.name; 
    NSString *titleString = [[[NSString alloc] initWithFormat:@"Element number : %d",indexPath.row] autorelease]; 
    UIAlertView *messageAlert = [[UIAlertView alloc] 
           initWithTitle:@"Row Selected" message:authorNAme2 delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 

    [messageAlert show]; 

    [self.navigationController pushViewController:vc animated:true]; 




/* 

    //Get the selected country 
    NSString *selectedAuthors = [theauthors objectAtIndex:indexPath.row]; 
    //NSLog(selectedAuthors); 

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
    Details *dvController = [storyboard instantiateViewControllerWithIdentifier:@"Details"]; //Or whatever identifier you have defined in your storyboard 

    //authorNAme = selectedAuthors.description; 

     //Initialize the detail view controller and display it. 
    //Details *dvController = [[Details alloc] init/*WithNibName:@"Details" bundle:nil*///]; 
/*  
    dvController.selectedAuthors = selectedAuthors; 

NSString *titleString = [[[NSString alloc] initWithFormat:@"Element number : %d",indexPath.row] autorelease]; 
    UIAlertView *messageAlert = [[UIAlertView alloc] 
           initWithTitle:@"Row Selected" message:titleString delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 

    [messageAlert show];*/ 
// NSString *elem = [new2 objectAtIndex:0]; 


    //NSLog(dvController.labelText.text); 
// NSString *titleString = [[[NSString alloc] initWithFormat:@"Author title : %d",indexPath.row] autorelease]; 

    // NSString *titleString2 = [[new2 objectAtIndex:indexPath.row] autorelease]; 
    // NSLog(@"this is the selected row , %s",titleString2); 

    // authorNAme = titleString; 


    /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! BReak point of SQL Query!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ 
/* 
    @try { 

     NSFileManager *fileMgr2 = [NSFileManager defaultManager]; 


     // NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"dictionary.sqlite"]; 
     //NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"authorsDb2.sqlite"]; 
     //  NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"FinalDb.sqlite"]; 
     //NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"xxJuridique-FINAL-OK.sqlite"]; 

     NSString *dbPath2 = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"data.sqlite"]; 

     BOOL success = [fileMgr2 fileExistsAtPath:dbPath2]; 
     if(!success) 
     { 
      NSLog(@"Cannot locate database file '%@'.", dbPath2); 
     } 
     if(!(sqlite3_open([dbPath2 UTF8String], &db) == SQLITE_OK)) 
     { 
      NSLog(@"An error has occured: %@", sqlite3_errmsg(db)); 

     } 
     NSLog(@"access to the second DB is ok"); 


     // const char *sql = "SELECT F_Keyword FROM wordss"; 
     const char *sql2 = "SELECT field7 FROM Sheet1 WHERE field1 = 'titleString' "; 
     //NSLog(sql2); 

     sqlite3_stmt *sqlStatement2; 
     if(sqlite3_prepare(db, sql2, -1, &sqlStatement2, NULL) != SQLITE_OK) 
     { NSLog(@"Problem with prepare the db"); 
      NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db)); 
     }else{ 

    // while (sqlite3_step(sqlStatement2)==SQLITE_ACCESS_EXISTS) { 

      NSLog(@"Starting to prepare the result"); 
      Author * author2 = [[Author alloc] init]; 
      NSLog(@"Author 2 created"); 

      author2.genre2 = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement2, 7)]; 
      NSLog(@"Initialistion of author 2 is ok"); 

     //  NSLog(author2.genre); 
       // authorNAme = author2.genre; 


      [theauthors addObject:author2]; 

    // } 

     } 

    } 
    @catch (NSException *exception) { 
     NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db)); 
    } 
    @finally { 
     // sqlite3_finalize(sqlStatement);. 
     // authorNAme = nil; 
     sqlite3_close(db); 
     // authorNAme = Nil; 
     return theauthors; 
    } 

*/ 


    //[self.navigationController pushViewController:dvController animated:YES]; 

} 


- (UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath { 

    //return UITableViewCellAccessoryDetailDisclosureButton; 
    return UITableViewCellAccessoryDisclosureIndicator; 
} 

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { 

    [self tableView:tableView didSelectRowAtIndexPath:indexPath]; 
} 



@end 

DetailsView控件控制器知道作爲Details.m:

// 
// Details.m 
// AuthorsApp 
// 
// Created by georges ouyoun on 7/17/12. 
// Copyright (c) 2012 __MyCompanyName__. All rights reserved. 
// 

#import "Details.h" 
#import "Author.h" 
#import "AuthorVC.h" 
#import <sqlite3.h> 

@interface Details() 

@end 

@implementation Details 
@synthesize Favo; 
@synthesize text2; 
@synthesize labelText; 
@synthesize selectedAuthors; 
@synthesize author , infoRequest; 

BOOL PAss = NO; 
BOOL SElected2 = NO; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 




- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
//  authorNAme = author.genre; 
// self.labelText.text =authorNAme; 
    // Do any additional setup after loading the view. 



    self.labelText.text = authorNAme; 
    self.text2.text = authorNAme2; 

    /*   This is where the label text APPearsssssssss     */ 


    NSLog(@"Everything is ok now !"); 
    // NSLog(authorNAme); 

} 
- (void)viewDidUnload 
{ 
    // [self setLabelText:nil]; 
    NSLog(@"U have entered view did unload"); 
    [AddBut release]; 
    AddBut = nil; 
    [self setText2:nil]; 
    [super viewDidUnload]; 

    [self setLabelText:Nil]; 
    [authorNAme release]; 

    // Release any retained subviews of the main view. 
} 


/* 
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 

    if ([segue.identifier isEqualToString:@"AuthorsCell"]) { 

     [segue.destinationViewController setLabelText:author.title]; 

    } 


} 



*/ 


-(void)viewWillAppear:(BOOL)animated 
{ 

    //labelText.text = authorNAme; 

    NSLog(@"U have entered the viewWillAppear tag"); 

    // detailsLabel.text = food.description; 
    //authorNAme=Nil; 
    //[self setauthorName:Nil]; 
} 

/* 
-(void) viewDidAppear:(BOOL)animated{ 

    labelText.text = @"This is the DidAppearTag"; 

    NSLog(@"U have entered the viewDidAppear tag"); 


} 

*/ 

-(void) viewWillDisappear:(BOOL)animated{ 


    NSLog(@"This is the view will disappear tag"); 

    //authorNAme.release; 


} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return YES; 
} 

- (void)dealloc { 
    [labelText release]; 
    [AddBut release]; 
    [text2 release]; 
    [super dealloc]; 
} 


- (IBAction)AddButClick:(UIButton *)sender { 



    [AddBut setImage:[UIImage imageNamed:@"apple-logo copy.png"] forState:UIControlStateSelected]; 
    [AddBut setImage:[UIImage imageNamed:@"apple-logo copy.png"] forState:UIControlStateHighlighted]; 
    Favo = [[NSMutableArray alloc] initWithCapacity:1000000]; 

    NSLog(authorNAme); 

    @try { 
     NSFileManager *fileMgr = [NSFileManager defaultManager]; 
     // NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"dictionary.sqlite"]; 
     //NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"authorsDb2.sqlite"]; 
     //  NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"FinalDb.sqlite"]; 
     //NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"xxJuridique-FINAL-OK.sqlite"]; 

     NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"data.sqlite"]; 

     BOOL success = [fileMgr fileExistsAtPath:dbPath]; 
     if(!success) 
     { 
      NSLog(@"Cannot locate database file '%@'.", dbPath); 
     } 
     if(!(sqlite3_open([dbPath UTF8String], &db) == SQLITE_OK)) 
     { 
      NSLog(@"An error has occured: %@", sqlite3_errmsg(db)); 

     } 


     // const char *sql = "SELECT F_Keyword FROM wordss"; 
     const char *sql = "SELECT * FROM Sheet1"; 
     NSLog(@"Successfully selected from database"); 
     sqlite3_stmt *sqlStatement; 
     if(sqlite3_prepare(db, sql, -1, &sqlStatement, NULL) != SQLITE_OK) 
     { 
      NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db)); 


     }else{ 


      NSLog(@"Got in the else tag"); 

      while (sqlite3_step(sqlStatement)==SQLITE_ROW /*&& PAss == NO*/) { 


       NSLog(@"Got in the while tag"); 

       Author * author = [[Author alloc] init]; 
       NSLog(@"Author initialized"); 

       author.name = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,10)]; 
       NSLog(@"Initialization ok"); 
      //  NSLog(author.name); 

       if(/*author.name == @"NO" &&*/ HighLighted == NO){ 
        //const char *sql2 = "INSERT INTO Sheet1 "; 

        [AddBut setImage:[UIImage imageNamed:@"apple-logo copy.png"] forState:UIControlStateNormal]; 
        NSLog(@"We have not selected it as fav yet"); 
        // [AddBut setSelected:NO]; //btn changes to normal state 
        NSLog(@"The button was NOt highlighted and now is"); 
        HighLighted = YES; 
        // PAss = YES; 
        // [self release]; 
        break; 


       } 

       else 
       { 

        NSLog(@"We have selected it as fav"); 

        [AddBut setImage:[UIImage imageNamed:@"apple-logo.png"] forState:UIControlStateNormal]; 
        [AddBut setSelected:NO]; //btn changes to normal state 
        NSLog(@"The button was highlighted and now is NOt"); 


        HighLighted = NO; 
        break; 

        // [self viewDidLoad]; 
        // PAss = YES; 

       } 
     //  [Favo release]; 

     //  NSLog(Favo); 

//    author.name = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,2)]; 
//    author.title = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,2)]; 
//    author.genre = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 4)]; 
//    [theauthors addObject:author]; 
      } 
     } 
    } 
    @catch (NSException *exception) { 

     NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db)); 

    } 
    @finally { 
     // sqlite3_finalize(sqlStatement); 
     sqlite3_close(db); 

     return Favo; 
    } 





    // [AddBut setSelected:YES]; 

// if(SElected == YES){ 
//  NSLog(@"The button was highlighted and now not"); 
//   
//  [AddBut setImage:[UIImage imageNamed:@"apple-logo.png"] forState:UIControlStateNormal]; 
//  [AddBut setSelected:NO]; //btn changes to highlighted åstate 
//  SElected = NO; 
//   
//   } 
//  
// else{ 
//  
//  [AddBut setSelected:YES]; //btn changes to normal state 
//  NSLog(@"The button was NOt highlighted and now is"); 
//  SElected = YES; 
//  
// } 

} 
@end 

回答

1

首先你必須要選擇行的值; 這是你的TABLEVIEWCONTROLLER

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath  { 
    if(listObject.count!=0){ 
//you will get the object from the list 
ObjectType *selectedObject=(ObjectType*)[listObject objectAtIndex:indexPath.row]; 

//you can call your view controller (in my example init with nib) 
yourDetailViewController = [[YourDetailViewController alloc] initWithNibName:@"YourDetailViewControllerNib" bundle:nil]; 
//you can set your selected object in order to use it on your detail view controller 
    yourDetailViewController.objectSelected = selectedObject; 
    [self.navigationController yourDetailViewController animated:YES]; 
} 
} 

這是您的DETAILVIEWCONTROLLER;

-(void)objectUpdate:(Object*)selectedObject withDBPath:(NSString *)dbPath{ 
NSError *errMsg; 
if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) { 

    const char *sql_stmt = [@"CREATE TABLE IF NOT EXISTS iosobjecttable (yourcolumns INTEGER PRIMARY KEY NOT NULL , youranothercolumn VARCHAR)" cStringUsingEncoding:NSUTF8StringEncoding]; 

    if (sqlite3_exec(database, sql_stmt, NULL, NULL, (__bridge void*)errMsg) == SQLITE_OK) 
    { 
     // SQL statement execution succeeded 
    } 

     if(updateStmt == nil) { 
      NSString *querySQL = [NSString stringWithFormat: 
            @"update iosobject set youranothercolumn=%@ where p_event_id=%@", object.changedcomlumn,object.objectid]; 

      const char *query_sql = [querySQL UTF8String]; 
      if(sqlite3_prepare_v2(database, query_sql, -1, &updateStmt, NULL) != SQLITE_OK){ 
       NSAssert1(0, @"Error while creating update statement. '%s'", sqlite3_errmsg(database)); 
       //NSLog(@"%@",errMsg); 
      } 
     } 
    @try { 

     if(SQLITE_DONE != sqlite3_step(updateStmt)){ 
      NSAssert1(0, @"Error while updating data. '%s'", sqlite3_errmsg(database)); 
      //NSLog(@"%@",errMsg); 
     } 
     else{ 
      //NSLog(@"updatingupdatingedelementt %@",tEvent.eventid); 
     } 
     sqlite3_reset(updateStmt); 
    } 
    @catch (NSException* ex) { 
      //NSLog(@"Error while updating data. '%s'", sqlite3_errmsg(database)); 
     } 
    } 
} 

以及你如何調用這個函數是這樣的;

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
NSString *dbPath=[appDelegate getDBPath]; 
[self objectUpdate:objectUpdate withDBPath:dbPath]; 

而在應用程序委託中,您必須在應用程序委託中編寫getDBPath;

- (NSString *) getDBPath { 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES); 
    NSString *documentsDir = [paths objectAtIndex:0]; 
    return [documentsDir stringByAppendingPathComponent:@"yourdbname.sqlite"]; 
} 
+0

我不得不承認它..我真是失去了....在Xcode IMA福利局,實際上我迷路了......請你在querstion – 2012-08-16 09:07:55

+0

@EliasRahme我看着你的代碼檢查出更新。但問題是什麼?現在我想你可以列出你的項目,選擇其中的一個,並正確地轉到詳細頁面?你需要什麼?你首先要求更新? – 2012-08-16 10:47:17

+0

事情是,當我點擊按鈕,我需要更新數據庫中稱爲Fav的字段的值。而我迷失了,其實我試圖按照你的建議,我非常感謝你說出迴應的時間,所以你可以幫忙把你的建議和我的主要代碼結合起來。 – 2012-08-16 11:20:26